WEBVTT

00:00.180 --> 00:02.610
Xin chào và chào mừng bạn đến với hướng dẫn Python này.

00:02.820 --> 00:07.710
Được rồi, vì vậy trong phần mã mới này, chúng tôi sẽ triển khai tính năng phát lại trải nghiệm.

00:07.710 --> 00:13.770
Vì vậy, chúng tôi sẽ tạo một lớp mới, mà chúng tôi sẽ gọi là bộ nhớ phát lại và điều đó sẽ triển khai trải nghiệm, phát lại

00:13.770 --> 00:16.590
chính xác như bạn đã thấy trong các bài giảng về trực giác.

00:16.590 --> 00:21.330
Nhưng trước tiên, hãy đưa ra lời nhắc nhanh về những gì đã trải qua khi chơi lại.

00:21.330 --> 00:26.550
Vì vậy, bạn biết đấy, tất cả trí thông minh nhân tạo này đều dựa trên các quy trình quyết định của Markov.

00:26.550 --> 00:31.710
Và các quy trình ra quyết định của Markov bao gồm việc xem xét một loạt các sự kiện.

00:31.710 --> 00:38.610
Vì vậy, các sự kiện, ví dụ, đi từ một trạng thái S-T sang trạng thái tiếp theo là T cộng với một.

00:38.850 --> 00:44.310
Nhưng nếu các sự kiện diễn ra như vậy, thì, vì trạng thái tiếp theo rất tương quan với trạng thái hiện tại,

00:44.310 --> 00:46.740
thì mạng sẽ không hoạt động tốt cho lắm.

00:46.740 --> 00:52.380
Vì vậy, đối với những người đến từ khóa học học sâu, điều đó giống hệt như nơi chúng tôi học chuỗi thời

00:52.380 --> 00:54.750
gian của mình chỉ với một bước thời gian.

00:54.780 --> 01:00.030
Nó không phải là học bất cứ điều gì bởi vì một bước thời gian không đủ để mô hình của chúng

01:00.030 --> 01:02.550
tôi học để hiểu các mối tương quan lâu dài.

01:02.850 --> 01:06.960
Vì vậy, ở đây cũng vậy, và đó là lý do tại sao chúng tôi phải triển khai tính năng phát lại trải nghiệm.

01:06.960 --> 01:08.160
Vì vậy, làm thế nào nó hoạt động?

01:08.160 --> 01:09.180
Chà, điều đó rất đơn giản.

01:09.180 --> 01:13.890
Thay vì chỉ xem xét các trạng thái hiện tại, đó chỉ là một trạng thái tại một thời điểm.

01:13.890 --> 01:20.430
T Chúng tôi sẽ xem xét nhiều hơn trong quá khứ, vì vậy chính xác là đối với ít TMS hơn và do đó chuỗi sự kiện

01:20.430 --> 01:23.610
của chúng tôi sẽ không phải là SD và SD cộng một.

01:23.640 --> 01:27.240
Ví dụ, đây sẽ là 100 tiểu bang trong quá khứ.

01:27.240 --> 01:33.600
Vì vậy, T -100 như T -99 đến C trừ đi một và sau đó là T.

01:33.750 --> 01:40.230
Vì vậy, nói cách khác, chúng ta đặt 100 lần chuyển đổi ít hơn vào cái mà chúng ta gọi là bộ nhớ, và đó là nơi chúng

01:40.230 --> 01:46.080
ta có trí nhớ dài hạn trái ngược với trí nhớ ngắn hạn hoặc thậm chí, tôi nên nói, một trí nhớ tức thì.

01:46.080 --> 01:49.740
Và điều đó làm cho toàn bộ quá trình học sâu hoạt động tốt hơn nhiều.

01:50.040 --> 01:57.240
Và sau khi tạo bộ nhớ này về 100 sự kiện cuối cùng, chúng tôi sẽ lấy mẫu, tức là, chúng tôi sẽ lấy một số lô

01:57.240 --> 02:02.100
ngẫu nhiên của các chuyển đổi này để thực hiện cập nhật tiếp theo của chúng tôi.

02:02.100 --> 02:05.580
Đó là bước tiếp theo của chúng tôi bằng cách chọn hành động tiếp theo.

02:05.910 --> 02:12.000
Và do đó, trong lớp bộ nhớ phát lại này mà chúng tôi đang triển khai để phát lại trải nghiệm, chúng tôi

02:12.000 --> 02:13.260
sẽ tạo ba hàm.

02:13.260 --> 02:15.630
Trước hết, chức năng init như bình thường.

02:15.630 --> 02:17.250
Đó là trường hợp của bất kỳ lớp nào.

02:17.250 --> 02:23.250
Và vì vậy trong hàm init này, chúng ta sẽ xác định các biến sẽ được gắn vào các thể hiện tương lai của

02:23.250 --> 02:27.060
lớp, đó là các đối tượng trong tương lai sẽ được tạo từ lớp này.

02:27.270 --> 02:33.150
Và rất đơn giản, các biến này sẽ là bộ nhớ của 100 lần chuyển đổi thành 100 sự kiện và

02:33.150 --> 02:39.510
dung lượng là số 100 mà bạn sẽ được chào đón để thử một bộ nhớ dài hơn bằng cách tăng dung lượng.

02:39.510 --> 02:42.060
Vì vậy, đó là chức năng đầu tiên trong chức năng.

02:42.210 --> 02:48.480
Và sau đó chúng ta sẽ thực hiện hai chức năng khác, một chức năng đẩy để đảm bảo rằng bộ nhớ không

02:48.480 --> 02:51.000
bao giờ chứa nhiều hơn 100 chuyển tiếp.

02:51.000 --> 02:56.580
Và đối với điều này, chúng tôi sẽ sử dụng dung lượng bằng cách chỉ thực hiện một điều kiện if đơn giản, và sau đó

02:56.580 --> 02:58.590
cuối cùng chúng tôi sẽ tạo ra hàm mẫu.

02:58.590 --> 03:04.740
Và đó tất nhiên sẽ là để lấy mẫu một số quá trình chuyển đổi trong bộ nhớ 100 lần chuyển đổi cuối cùng này.

03:05.340 --> 03:05.670
Được rồi.

03:05.670 --> 03:08.340
Vì vậy, hãy bắt đầu bằng cách giới thiệu lớp học.

03:08.340 --> 03:12.510
Vì vậy, như thường lệ, chúng tôi bắt đầu với lớp và sau đó chúng tôi đặt tên cho lớp.

03:12.510 --> 03:15.690
Vì vậy, chúng tôi gọi nó là bộ nhớ phát lại.

03:16.980 --> 03:23.340
Và sau đó trong ngoặc đơn, chúng ta nhập đối tượng, sau đó là cột, và sau đó chúng ta bắt đầu.

03:23.340 --> 03:26.730
Chúng ta bắt đầu với hàm đầu tiên, hàm init.

03:26.970 --> 03:30.600
Vì vậy, điều đó giống hệt như trước khi chúng ta bắt đầu với cái chết.

03:30.600 --> 03:36.480
Sau đó để gạch dưới nó, để gạch dưới một lần nữa và sau đó là các biến.

03:36.480 --> 03:42.330
Vì vậy, tất nhiên có self là biến được gắn với các thể hiện tương lai của lớp, các đối

03:42.330 --> 03:43.350
tượng tương lai.

03:43.440 --> 03:49.170
Và sau đó chúng tôi sẽ có một biến khác để bạn có thể thử một số trải nghiệm khác, thay thế

03:49.170 --> 03:52.410
một số ký ức khác, và đó sẽ là dung lượng.

03:52.710 --> 03:58.230
Vì vậy, dung lượng này sẽ đơn giản là con số 100 vì chúng tôi sẽ thực hiện phát lại trải nghiệm

03:58.230 --> 04:00.180
với 100 lần chuyển đổi cuối cùng.

04:00.810 --> 04:01.230
Được rồi.

04:01.230 --> 04:03.810
Và sau đó là Colin và chúng ta bắt đầu.

04:03.810 --> 04:10.170
Hãy vào bên trong hàm và xác định các biến của các đối tượng bộ nhớ phát lại của chúng ta.

04:10.170 --> 04:14.670
Vì vậy, cái đầu tiên sẽ là dung lượng tự chấm.

04:15.970 --> 04:22.060
Và như bạn có thể đã hiểu, đây sẽ là dung lượng là số lượng chuyển đổi tối đa mà chúng ta muốn có trong

04:22.060 --> 04:24.580
bộ nhớ của chúng ta về các sự kiện.

04:24.580 --> 04:31.630
Và điều này sẽ bằng đối số mà chúng ta sẽ nhập khi tạo một đối tượng của lớp bộ nhớ phát

04:31.630 --> 04:34.210
lại, và do đó đó là dung lượng.

04:34.300 --> 04:36.430
Đó là đối số của hàm init.

04:36.430 --> 04:37.660
Vì vậy, công suất.

04:37.960 --> 04:45.160
Vì vậy, không nên nhầm lẫn, năng lực bản thân là tên của biến số gắn liền với đối tượng và

04:45.160 --> 04:46.180
năng lực.

04:46.180 --> 04:52.030
Đây là đối số mà chúng ta sẽ nhập khi tạo một đối tượng của lớp bộ nhớ phát lại.

04:52.710 --> 04:53.550
Được rồi.

04:53.550 --> 04:55.770
Và sau đó chúng ta có một biến thứ hai.

04:55.860 --> 04:57.750
Đó tất nhiên là ký ức.

04:57.750 --> 05:00.240
Vì vậy, tự chấm bộ nhớ.

05:01.630 --> 05:02.290
Được rồi.

05:02.620 --> 05:05.650
Và như vậy biến bộ nhớ này sẽ có giá trị như thế nào?

05:05.770 --> 05:13.240
Chà, bộ nhớ này được cho là chứa 100 sự kiện cuối cùng, và do đó, đây phải là một danh sách đơn giản, bạn

05:13.240 --> 05:18.880
biết đấy, một danh sách sẽ chứa 100 sự kiện cuối cùng, 100 lần chuyển đổi cuối cùng.

05:19.210 --> 05:22.030
Và để khởi tạo danh sách, không có gì đơn giản hơn.

05:22.030 --> 05:25.900
Chúng tôi chỉ thêm một số dấu ngoặc như vậy và chúng tôi bắt đầu.

05:25.900 --> 05:27.610
Bộ nhớ của chúng tôi được khởi tạo.

05:27.610 --> 05:32.590
Vì vậy, tất nhiên, khi bắt đầu thử nghiệm, hay chính xác hơn là khi bắt đầu khám phá, bộ nhớ

05:32.620 --> 05:34.330
sẽ là một danh sách trống.

05:34.330 --> 05:38.320
Và sau đó chúng tôi sẽ đặt các chuyển đổi mỗi khi chúng tôi đạt đến trạng thái trong tương lai.

05:38.320 --> 05:43.390
Và nói về điều đó, đó chính xác là những gì chúng ta sẽ làm với hàm tiếp theo mà chúng ta

05:43.390 --> 05:44.590
sẽ gọi là hàm push.

05:44.590 --> 05:49.570
Chúng tôi sẽ thực hiện chức năng đẩy này để nối các sự kiện trong danh sách bộ nhớ này.

05:49.570 --> 05:56.530
Và sau đó chúng ta sẽ sử dụng dung lượng để đảm bảo rằng danh sách bộ nhớ này luôn chứa 100 sự kiện và không bao giờ nhiều hơn

05:56.530 --> 05:56.980
thế.

05:57.340 --> 05:59.500
Được rồi, hãy làm điều này trong hướng dẫn tiếp theo.

05:59.500 --> 06:00.820
Và cho đến khi đó, hãy tận hưởng.

06:00.820 --> 06:01.330
TÔI.
