WEBVTT

00:00.150 --> 00:02.010
Xin chào và chào mừng đến với hướng dẫn này.

00:02.040 --> 00:04.870
Xin chúc mừng một lần nữa vì đã hoàn thành với cả ba.

00:04.900 --> 00:06.170
Thấy chưa, chúng tôi đã làm được.

00:06.180 --> 00:08.180
Chúng tôi tạo ra bộ não và chúng tôi đào tạo chúng.

00:08.190 --> 00:14.940
Nhưng bây giờ chúng ta vẫn phải tạo một đại lý thử nghiệm, tác nhân này sẽ không cập nhật mô hình nào cả, mà nó sẽ

00:14.940 --> 00:19.260
chỉ sử dụng mô hình được chia sẻ để thực hiện các khám phá của riêng mình.

00:19.290 --> 00:24.690
Và tất nhiên trong đoạn code này, chúng tôi sẽ quay một số video và đây sẽ là những video quay thử

00:24.690 --> 00:27.660
người chơi này chơi breakout với một số điểm nhất định.

00:28.560 --> 00:30.710
Vì vậy, chúng ta hãy đi qua đoạn mã này.

00:30.720 --> 00:31.980
Quan trọng nhất là xong.

00:31.980 --> 00:37.320
Vì vậy, như tôi đã nói với bạn, chúng tôi sẽ không viết mã từng dòng, nhưng tôi nghĩ điều quan trọng là bạn phải hiểu những

00:37.320 --> 00:38.520
gì đang xảy ra ở đây.

00:38.520 --> 00:40.710
Vì vậy, chúng tôi đi với mã này.

00:40.740 --> 00:47.280
Trong phần đầu tiên, như bạn đã nhận thấy, chúng tôi nhập các thư viện và sau đó chúng tôi xác định chức năng kiểm tra

00:47.280 --> 00:52.170
này sẽ làm cho tác nhân kiểm tra này tự khám phá và chơi trò chơi đột phá.

00:52.350 --> 00:53.070
Vậy là xong.

00:53.070 --> 00:55.230
Hàm kiểm tra này có ba đối số.

00:55.230 --> 01:01.230
Đầu tiên là xếp hạng, và đó là vẫn phải thực hiện đồng bộ hóa tác nhân thử nghiệm như chúng tôi đã làm đối với các đại

01:01.230 --> 01:01.950
lý đào tạo.

01:01.950 --> 01:05.100
Sau đó, chúng tôi có các tham số của mình, tất nhiên, bởi vì chúng tôi sẽ cần một số.

01:05.100 --> 01:12.150
Và tất nhiên chúng tôi có mô hình được chia sẻ vì tác nhân thử nghiệm này sẽ sử dụng mô hình được chia sẻ để thực hiện việc khám

01:12.150 --> 01:13.140
phá riêng của mình.

01:13.170 --> 01:18.150
Được rồi, sau đó, chúng ta đi vào bên trong hàm trong dòng mã này, chúng ta đã đồng bộ hóa tác nhân thử nghiệm

01:18.150 --> 01:20.190
chính xác như chúng ta đã làm trước đó.

01:20.520 --> 01:22.950
Sau đó, chúng tôi nhập môi trường.

01:22.950 --> 01:28.530
Vì vậy, tôi nhắc nhở rằng trong mã chính, sẽ có trong hướng dẫn tiếp theo, tên cuối ở đây sẽ

01:28.530 --> 01:34.470
được thay thế bằng dấu ngắt bằng 0 để chúng ta có thể đi vào môi trường đột phá bằng 0 và chơi

01:34.470 --> 01:35.010
trò chơi.

01:35.010 --> 01:39.960
Và video bằng true có nghĩa là chúng tôi sẽ nhận được các video về đột phá đường ống của chúng tôi.

01:39.960 --> 01:46.410
Vì vậy, về cơ bản dòng mã này có nghĩa là chúng tôi chạy một môi trường với video.

01:46.830 --> 01:53.160
Sau đó, ở dòng mã tiếp theo, chúng tôi đã đồng bộ hóa môi trường này theo nguyên tắc chính xác như trong một hàm

01:53.160 --> 01:54.090
được đào tạo.

01:54.450 --> 02:02.100
Sau đó, chúng tôi nhận được mô hình của mình và để làm điều này, chúng tôi tạo một đối tượng của lớp đang hoạt động và chúng tôi nhập hình dạng

02:02.100 --> 02:06.330
đầu vào với môi trường, quan sát, không gian và hình dạng của chúng tôi bằng không.

02:06.330 --> 02:13.590
Chính xác như đối với hàm train và kết quả đầu ra của chúng ta, đó là các hành động với một không gian hành động.

02:13.590 --> 02:17.310
Vì vậy, chính xác như trước đó một cái gì đó mới ở đây.

02:17.310 --> 02:23.400
Vì chúng tôi đã hoàn thành quá trình đào tạo, chúng tôi không muốn đặt mô hình ở chế độ đào tạo vì đơn giản là chúng tôi

02:23.400 --> 02:29.640
không muốn nó đào tạo, chúng tôi muốn đặt nó ở chế độ VAL và đó là những gì chúng tôi làm ở đây với dấu chấm mô hình valy.

02:29.640 --> 02:36.960
Vì vậy, về cơ bản đó chỉ là đặt tác nhân kiểm tra ở một chế độ về cơ bản sẽ kiểm tra nó, kiểm tra hiệu suất của nó

02:36.960 --> 02:37.950
được đánh giá.

02:38.460 --> 02:45.510
Sau đó, ở đây chúng tôi nhận được các trạng thái đầu vào của chúng tôi là các hình ảnh đầu vào từ trò chơi, tại thời điểm này được thực

02:45.510 --> 02:46.560
hiện bởi các mảng.

02:46.560 --> 02:49.230
Sau đó, ở đây chúng tôi chuyển đổi chúng thành cảm biến ngọn đuốc.

02:49.230 --> 02:51.750
Ở đây chúng tôi khởi tạo một số phần thưởng.

02:52.080 --> 02:54.960
Ở đây chúng tôi khởi tạo thành true.

02:54.960 --> 02:58.770
Vì vậy, vẫn giống như lần trước, sau đó một cái gì đó mới lại.

02:58.770 --> 03:05.730
Chúng tôi giới thiệu biến thời gian thứ ba này với hàm time to time để đo thời gian tính toán.

03:06.000 --> 03:11.760
Và đó là bởi vì chúng tôi muốn có được điểm bắt đầu, sau đó ở đây cho các hành động, chúng tôi sử dụng một

03:11.760 --> 03:16.410
loại cue rất thiết thực cho phép thêm một phần tử vào hàng đợi từ bên phải hoặc bên trái.

03:16.410 --> 03:21.930
Vì vậy, điều đó rất thực tế và tôi sẽ cung cấp cho bạn liên kết tham khảo trong phiên bản được đề xuất của mã.

03:21.930 --> 03:27.060
Vì vậy, bạn sẽ có một cái nhìn về hàng đợi ngày này là gì, và đó là những gì cho phép chúng tôi làm điều đó.

03:27.210 --> 03:33.300
Sau đó, chúng tôi khởi tạo độ dài của một tập bằng 0, tất nhiên, và sau đó chúng tôi sẽ tăng kích thước

03:33.300 --> 03:34.620
trong vòng lặp giếng này.

03:34.620 --> 03:42.240
Vì vậy, chúng tôi sử dụng thủ thuật tương tự ở đây khi true và trong vòng lặp, chúng tôi tăng độ dài của tập lên một.

03:42.240 --> 03:48.660
Khi trò chơi được thực hiện xong, khi trò chơi kết thúc, chúng tôi tải lại bộ cuối cùng của mô hình được chia sẻ.

03:48.690 --> 03:51.330
Mô hình được chia sẻ đã được cập nhật bởi các mô hình khác.

03:51.330 --> 03:54.750
Hãy nhớ rằng ở đây mô hình được chia sẻ này không còn được cập nhật.

03:54.960 --> 04:00.270
Sau đó, vẫn còn, nếu trò chơi kết thúc, nếu trò chơi kết thúc, chúng ta sẽ ở trong đó.

04:00.270 --> 04:09.750
Chúng tôi khởi tạo lại trạng thái ô, xem x và các trạng thái ẩn h x và nếu trò chơi vẫn chưa kết thúc, chúng tôi giữ nguyên trạng

04:09.930 --> 04:15.810
thái ô và trạng thái ẩn, nhưng chúng tôi đảm bảo chúng nằm trong một biến tổng để chúng

04:15.810 --> 04:18.030
có thể gắn với một gradient.

04:18.360 --> 04:24.030
Vì vậy, đó là một cái gì đó chúng tôi đã làm trong hàm train và sau đó vẫn còn trong vòng lặp hoang dã.

04:24.030 --> 04:30.270
Và sau khi đã cập nhật các trạng thái ô ở các trạng thái ẩn một cách đúng đắn, tùy thuộc vào hai trường hợp

04:30.270 --> 04:30.780
ở đây.

04:30.780 --> 04:31.800
Chà, chúng ta phải làm gì?

04:31.800 --> 04:34.260
Chúng tôi nhận được các dự đoán của mô hình.

04:34.260 --> 04:37.230
Vì vậy, đó chính xác là những gì chúng tôi làm ở đây với dòng mã này.

04:37.530 --> 04:42.600
Vì vậy, chúng tôi nhận được giá trị, là đầu ra của chỉ số, giá trị hành động, là đầu ra của

04:42.600 --> 04:47.610
tác nhân, và sau đó là đỉnh, tất cả các trạng thái ẩn, h, x và trạng thái ô xem x.

04:48.030 --> 04:53.550
Sau đó, chúng tôi tạo ra một phân phối xác suất của các hành động có giá trị Q giá trị hành động

04:53.580 --> 04:54.060
ở đây.

04:54.060 --> 04:56.280
Và chúng tôi làm điều này với hàm max.

04:56.280 --> 05:01.290
Và tất nhiên chúng ta không cần lấy xác suất log ở đây vì nó chỉ dành cho việc đào tạo

05:01.290 --> 05:02.520
cho nhân viên kiểm tra.

05:02.520 --> 05:08.670
Nó sẽ chỉ chơi các hành động mà chúng ta sẽ sử dụng như doom, một cơ thể tối đa mềm để chơi nó.

05:08.670 --> 05:12.240
Nhưng chúng tôi không thực hiện bất kỳ khóa đào tạo nào ở đây, vì vậy chúng tôi chỉ có chỗ dựa.

05:12.240 --> 05:18.960
Và từ thăm dò này, chúng tôi thực hiện hành động bằng cách lấy trực tiếp giá trị lớn nhất của các xác suất này.

05:18.960 --> 05:22.530
Đó là, nó thực hiện hành động có xác suất cao nhất.

05:22.530 --> 05:26.610
Và lý do là nhân viên kiểm tra không thực hiện bất kỳ hoạt động thăm dò nào.

05:26.610 --> 05:28.140
Hãy nhớ rằng chúng tôi muốn.

05:28.260 --> 05:34.170
Có cơ hội chọn một số hành động có xác suất thấp khi chúng tôi muốn thực hiện một số khám phá về những

05:34.170 --> 05:39.560
hành động khác này và bạn biết đấy, không thực hiện mỗi lần hành động có xác suất cao nhất.

05:39.600 --> 05:42.240
Nhưng ở đây nhân viên kiểm tra sẽ không thực hiện bất kỳ hoạt động thăm dò nào.

05:42.240 --> 05:46.800
Và do đó, đó là lý do tại sao chúng tôi trực tiếp thực hiện hành động có xác suất tối đa.

05:47.520 --> 05:54.990
Và sau đó khi chúng tôi chơi hành động, chúng tôi đạt đến trạng thái tiếp theo và chúng tôi nhận được phần thưởng tiếp theo và việc hoàn thành sẽ được cập nhật cho

05:54.990 --> 05:56.870
dù trò chơi có kết thúc hay không.

05:56.880 --> 06:03.450
Vì vậy, chúng tôi nhận được tất cả những điều này với dòng mã này bằng cách chơi hành động sau khi đã chọn nó với giá trị tối

06:03.720 --> 06:04.550
đa ở đây.

06:04.560 --> 06:10.980
Vì vậy, chúng tôi chơi hành động ở đây và chúng tôi nhận được trạng thái, chúng tôi nhận được phần thưởng và phần thưởng được cập nhật.

06:11.610 --> 06:17.970
Và vì chúng tôi vừa nhận được phần thưởng mới, nên chúng tôi sẽ cập nhật tổng phần thưởng bằng cách chỉ cần thêm phần

06:17.970 --> 06:18.900
thưởng mới này.

06:18.900 --> 06:21.420
Và cuối cùng, bất cứ khi nào trò chơi được thực hiện.

06:21.420 --> 06:27.510
Vì vậy, nếu hoàn thành có nghĩa là khi trò chơi kết thúc, khi AI chơi xong trò chơi,

06:27.510 --> 06:35.100
tốt, chúng tôi sẽ in kết quả cùng với thời gian, phần thưởng cho độ dài của tập đó là khoảng thời gian mà nó

06:35.100 --> 06:37.140
đã chơi lần cuối cùng. ngoài?

06:37.140 --> 06:42.690
Và đây chỉ là cách chúng tôi in tất cả các biến này bằng cách sử dụng các thủ thuật thời gian này.

06:42.690 --> 06:43.890
Vì vậy, đó là thời gian.

06:43.890 --> 06:49.050
Và sau đó phần thưởng một số chỉ là một biến cho tổng phần thưởng và độ dài tập là biến cho

06:49.050 --> 06:50.400
độ dài của một tập.

06:51.130 --> 06:57.370
OC và sau đó khi chúng tôi in tất cả các kết quả, tốt, vì trò chơi đã kết thúc và chúng tôi muốn bắt đầu

06:57.370 --> 07:02.020
một trò chơi mới, chúng tôi sẽ khởi tạo lại mọi thứ có tổng phần thưởng bằng không.

07:02.050 --> 07:03.940
Thời lượng của một tập bằng 0.

07:03.970 --> 07:07.660
Chúng tôi sẽ bắt đầu lại tất cả các hành động bằng cách sử dụng chức năng rõ ràng này.

07:07.960 --> 07:13.330
Đặt lại các hình ảnh đầu vào mà bạn biết, bằng cách đặt tất cả các khối hình lại với nhau.

07:13.330 --> 07:21.550
Và cuối cùng, chúng tôi sử dụng thời gian ngủ 60 giây này để nghỉ ngơi trong một phút để cho các đặc vụ khác luyện tập và

07:21.550 --> 07:29.650
nếu trò chơi kết thúc và cuối cùng chúng tôi có dòng mã cuối cùng này sẽ giúp chúng tôi có trạng thái mới, và sau đó

07:29.650 --> 07:32.110
chúng ta có thể tiến về phía trước.

07:32.110 --> 07:34.030
Chúng ta có thể tiếp tục trong trò chơi mới này.

07:34.300 --> 07:35.710
Vậy là xong.

07:35.710 --> 07:40.360
Đó là chức năng kiểm tra, nhờ đó chúng ta sẽ xem các video trong một hoặc hai hướng dẫn.

07:40.360 --> 07:43.900
Tôi hy vọng chúng ta sẽ ở bên nhau như lần trước để xem kết quả.

07:43.900 --> 07:46.210
Đó là với bạn, Carol và tôi.

07:46.210 --> 07:47.260
Điều đó sẽ rất vui.

07:47.260 --> 07:50.260
Và tôi đang nói với bạn, hãy mong đợi để thấy kết quả tốt.

07:50.260 --> 07:54.820
Nhưng hãy nhớ rằng trò chơi đột phá này là siêu thử thách.

07:54.820 --> 07:58.330
Chúng tôi nghĩ rằng đó là trò chơi đơn giản nhất để chơi trước, nhưng không phải vậy.

07:58.330 --> 08:03.790
Nó thực sự khó hơn nhiều so với Doom, và đó là lý do tại sao chúng tôi đưa nó vào mô-đun cuối cùng.

08:03.940 --> 08:11.440
Nhưng dù sao đi nữa, hãy thực hiện chức năng chính này trong hướng dẫn tiếp theo nói rằng đây không phải là chức năng quan trọng nhất ở

08:11.440 --> 08:11.740
đây.

08:11.740 --> 08:14.440
Bây giờ a3c đã được thực hiện xong.

08:14.440 --> 08:16.120
Vì vậy, chúng tôi sẽ không viết mã từng dòng một.

08:16.120 --> 08:20.320
Tôi sẽ mở rộng mã và rất nhanh chóng chúng ta sẽ nhận được kết quả.

08:20.320 --> 08:21.610
Cho đến lúc đó, hãy tận hưởng.

08:21.610 --> 08:21.970
TÔI.
