WEBVTT

00:00.480 --> 00:02.730
Xin chào và chào mừng bạn đến với hướng dẫn Python này.

00:02.910 --> 00:03.960
Vì vậy, chúng ta hãy làm điều này.

00:03.960 --> 00:08.370
Hãy tạo vòng lặp for này, bắt đầu từ bên phải và sang bên trái.

00:08.430 --> 00:11.400
Và để làm điều này, chúng tôi sẽ thêm bốn.

00:11.730 --> 00:17.580
Vì vậy, lần này, biến được lặp lại sẽ là bước của chúng ta bởi vì chúng ta sẽ đi từ bước

00:17.580 --> 00:21.660
cuối cùng đến bước đầu tiên của chuỗi chuyển đổi và tiếp tục là bước.

00:21.660 --> 00:29.850
Và bây giờ mẹo để đi từ bên phải sang bên trái là sử dụng bốn bước vào, đảo ngược, đảo ngược.

00:29.850 --> 00:31.920
Và bây giờ chúng ta chỉ cần nhập một chuỗi.

00:31.920 --> 00:35.160
Và chuỗi này tất nhiên sẽ là chuỗi của chúng ta.

00:35.160 --> 00:36.930
Vì vậy, chúng tôi nhập chuỗi của chúng tôi.

00:37.020 --> 00:41.730
Nhưng như bạn có thể thấy trong bài báo, chúng ta đi từ T trừ một đến T bắt đầu.

00:41.730 --> 00:43.890
Vì vậy, chúng tôi không đi từ bước cuối cùng, cuối cùng.

00:43.890 --> 00:48.120
Đó là trạng thái đầu cuối, nhưng trạng thái trước đó, đó là t trừ đi một.

00:48.120 --> 00:50.160
Nhưng hai để bắt đầu đó là bước đầu tiên.

00:50.160 --> 00:57.930
Và vì vậy ở đây để đi từ không phải trạng thái cuối cùng mà là trạng thái trước đó, chúng ta cần thêm vào trong dấu ngoặc, cột

00:57.960 --> 00:58.980
trừ đi một.

00:59.160 --> 01:03.630
Tôi chắc rằng đối với những bạn đã theo học máy móc và khóa học học

01:03.630 --> 01:10.140
sâu, bạn biết đấy, mẹo này, Colin, trừ đi một, có nghĩa là bạn đang đi đến phần tử trước phần tử cuối cùng, nhưng

01:10.140 --> 01:11.850
không phải phần tử cuối cùng.

01:11.850 --> 01:14.610
Và do đó chúng tôi nhận được trình tự chúng tôi muốn.

01:14.610 --> 01:20.820
Đó là chúng ta sẽ đi từ phần tử trước phần tử cuối cùng cho đến phần tử đầu tiên, và chúng tôi làm những việc

01:20.820 --> 01:23.790
để đảo ngược nó, để đi từ bên phải sang bên trái.

01:23.940 --> 01:24.330
Được rồi.

01:24.330 --> 01:26.850
Vì vậy, chúng tôi đã sẵn sàng để nhập vòng lặp đầy đủ.

01:26.850 --> 01:29.580
Và bên trong vòng lặp for này, chúng ta sẽ làm gì?

01:29.610 --> 01:32.670
Chà, chúng ta sẽ làm chính xác như trong báo cáo.

01:32.670 --> 01:39.300
Chúng tôi sẽ cập nhật phần thưởng tích lũy bằng cách nhân nó với Gamma và thêm phần thưởng nhận được trong

01:39.300 --> 01:42.120
bước hiện tại trong bước của vòng lặp for.

01:42.480 --> 01:45.330
Được rồi, hãy làm điều này, quay lại Python.

01:45.330 --> 01:52.710
Và vì vậy, trước tiên chúng tôi muốn cập nhật phần thưởng tích lũy của mình theo cách sau.

01:53.410 --> 01:54.790
Nhân nó lên.

01:55.520 --> 01:56.510
Tạm biệt, Gemma.

01:57.650 --> 01:58.430
Chúng ta bắt đầu.

01:58.460 --> 02:00.140
Ở đây chúng tôi nhân nó với Gemma.

02:00.260 --> 02:03.830
Và sau đó chúng tôi muốn thêm phần thưởng của.

02:04.490 --> 02:09.220
Bước mà chúng ta có thể truy cập theo cách này với cấu trúc đặc biệt.

02:09.230 --> 02:12.890
Hãy nhớ rằng phần thưởng là một thuộc tính của đối tượng bước.

02:12.890 --> 02:15.710
Và vì vậy, ở đây, tất nhiên, chúng tôi thêm một điểm cộng.

02:15.800 --> 02:16.190
Được rồi.

02:16.190 --> 02:22.610
Vì vậy, phần thưởng tích lũy tương đương với phần thưởng của bước chúng ta đang ở ngay bây giờ, vòng lặp cộng với Gamma Times, phần

02:22.610 --> 02:25.490
thưởng tích lũy trước đó trước khi nó được cập nhật.

02:25.970 --> 02:26.720
Hoàn hảo.

02:26.720 --> 02:27.980
Vì vậy, bây giờ tôi nghĩ chúng tôi tốt.

02:27.980 --> 02:30.050
Chúng tôi đang theo sát thuật toán một cách triệt để.

02:30.260 --> 02:32.480
Và bây giờ là thời gian cho các bước tiếp theo.

02:32.600 --> 02:34.850
Vâng, bây giờ nó sẽ trở nên khá dễ dàng.

02:34.850 --> 02:40.890
Chúng ta quay lại vòng lặp for đầu tiên, vì vòng lặp for này chỉ để tính toán phần thưởng tích lũy biết đi từ

02:41.000 --> 02:45.140
bên phải sang bên trái bằng cách cập nhật theo cách này, tuân theo thuật toán.

02:45.680 --> 02:51.950
Và bây giờ, như bạn nhớ, mục tiêu của việc làm tất cả những điều này là chuẩn bị đầu vào của chúng tôi sẵn sàng và các mục tiêu của chúng tôi đã sẵn sàng

02:51.950 --> 02:55.670
để chúng tôi có thể giảm thiểu sự khác biệt bình phương giữa hai mục tiêu cho khóa đào tạo.

02:55.670 --> 03:00.890
Và vì vậy ngay bây giờ, điều duy nhất chúng ta phải làm là chuẩn bị sẵn sàng các đầu vào và mục tiêu này.

03:00.950 --> 03:03.170
Vì vậy, chúng ta hãy làm điều này đầu tiên.

03:03.170 --> 03:08.330
Những gì chúng ta cần làm là thêm trạng thái đầu tiên của chuỗi trong danh sách đầu vào của chúng tôi.

03:08.330 --> 03:14.030
Cho đến nay, trạng thái đầu vào này nằm trong biến đầu vào này, nhưng đó chỉ là để tính toán đầu ra.

03:14.030 --> 03:19.340
Vì vậy, chúng ta sẽ nhận được trạng thái đầu vào này của bước đầu tiên một cách riêng biệt vì đó chính xác là những gì chúng ta

03:19.340 --> 03:21.170
cần thêm vào danh sách đầu vào của mình.

03:21.170 --> 03:23.090
Vì vậy, chúng ta hãy nhận điều này một cách riêng biệt.

03:23.120 --> 03:25.520
Do đó, chúng ta sẽ gọi nó là trạng thái.

03:25.760 --> 03:28.100
Và giống hệt như ở đây.

03:28.100 --> 03:34.370
Chúng ta có thể lấy nó theo cách này bằng cách lấy chỉ mục đầu tiên của chuỗi chứa chuyển đổi đầu tiên, sau đó thêm

03:34.370 --> 03:37.880
trạng thái đó để có được trạng thái của chuyển đổi đầu tiên này.

03:38.120 --> 03:40.760
Vì vậy, đó là thứ chúng ta cần sau đó cũng vậy.

03:40.760 --> 03:46.580
Chúng tôi sẽ nhận riêng mục tiêu được liên kết với trạng thái đầu vào này của quá trình chuyển đổi đầu tiên.

03:46.580 --> 03:53.330
Và vì vậy tôi đang giới thiệu một biến mới ở đây mục tiêu sẽ bằng giá trị Q của bước đầu tiên.

03:53.330 --> 03:58.670
Và vì giá trị Q được trả về bởi mạng nơ-ron nên nó được chứa trong đầu ra.

03:58.670 --> 04:05.660
Và vì đầu ra là đầu ra được liên kết với đầu vào này chứa phần tử đầu tiên của quá trình chuyển đổi, nên chúng

04:05.660 --> 04:12.830
ta có thể nhận được giá trị Q này của trạng thái đầu tiên bằng cách lấy đầu ra ở đây và lấy chỉ số bằng không.

04:12.830 --> 04:20.780
Và sau đó, chúng tôi thêm dữ liệu dấu chấm sẽ chỉ đơn giản là lấy cho chúng tôi giá trị Q của trạng thái đầu vào của quá trình chuyển đổi đầu tiên.

04:20.780 --> 04:22.850
Và đó chính xác là giá trị Q mục tiêu.

04:22.850 --> 04:24.740
Vì vậy, đó là lý do tại sao chúng tôi đang sử dụng nó.

04:25.100 --> 04:31.370
Sau đó, chúng tôi sẽ cập nhật biến mục tiêu này, nhưng chỉ cho hành động đã được chọn trong bước

04:31.370 --> 04:32.900
đầu tiên của chuỗi.

04:32.900 --> 04:39.650
Và để truy cập bước đầu tiên này của chuỗi, chúng ta cần lấy chuỗi số 0 đầu tiên vì đây chính

04:39.650 --> 04:42.680
xác là bước đầu tiên của chuỗi số 0.

04:42.680 --> 04:47.270
Và để truy cập hành động tương ứng với bước đầu tiên này của loạt bài.

04:47.270 --> 04:48.950
Chà, chúng ta cần thêm vào đây.

04:49.730 --> 04:51.000
Hành động chấm.

04:51.030 --> 04:54.930
Một lần nữa, đó là cấu trúc thuộc tính này mà chúng tôi đang sử dụng.

04:55.290 --> 04:58.740
Hành động là một thuộc tính của bước đầu tiên của chuỗi.

04:58.740 --> 05:04.590
Đó là lần chuyển đổi đầu tiên của loạt phim vì mỗi lần chuyển đổi của loạt phim đều có cấu trúc như sau,

05:04.590 --> 05:08.340
hành động trạng thái, phần thưởng và hành động được thực hiện ở đây.

05:08.340 --> 05:13.500
Hành động thuộc tính này ở đây có nghĩa là chúng tôi chỉ đơn giản là nhận được hành động của ngày đầu tiên này.

05:14.170 --> 05:21.310
Và do đó, mục tiêu cho hành động cụ thể của bước đầu tiên chính xác là những gì cần được cập nhật bởi

05:21.310 --> 05:22.540
phần thưởng tích lũy.

05:22.570 --> 05:29.260
Vì vậy, về cơ bản ở đây chúng tôi sẽ viết rằng mục tiêu liên quan đến hành động được thực hiện

05:29.260 --> 05:35.560
trong bước đầu tiên của loạt bài này là phần thưởng tích lũy mà chúng tôi vừa tính toán.

05:35.950 --> 05:36.670
Được rồi.

05:36.670 --> 05:45.010
Và bây giờ chúng tôi cuối cùng đã sẵn sàng cập nhật thông tin đầu vào của mình bằng cách thêm trạng thái đầu vào đầu tiên này tại đây và mục tiêu đầu tiên

05:45.010 --> 05:45.730
này tại đây.

05:45.730 --> 05:51.130
Đối với bước đầu tiên, chúng ta chỉ cần cập nhật bước đầu tiên của loạt bài này vì bạn biết đấy,

05:51.130 --> 05:55.930
chúng ta luyện mắt về mười bước và do đó đầu vào là bước đầu tiên trong mười bước.

05:55.930 --> 06:01.000
Và chúng ta cũng đạt được mục tiêu trong bước đầu tiên này, nhưng sau đó chúng ta không cần nhận bất kỳ đầu vào

06:01.000 --> 06:06.150
hoặc bất kỳ mục tiêu nào trong các bước tiếp theo của mười bước, bởi vì về cơ bản việc học diễn ra sau mười bước.

06:06.160 --> 06:11.110
Vì vậy, đó là lý do tại sao ngay bây giờ chúng tôi chỉ nhận được trạng thái và mục tiêu của bước đầu tiên của loạt phim.

06:11.620 --> 06:13.240
Vì vậy, điều quan trọng là phải hiểu điều đó.

06:13.240 --> 06:18.280
Và do đó, nếu chúng ta hiểu điều đó, thì bây giờ chúng ta hiểu rằng chúng ta phải nhập chúng vào danh sách đầu

06:18.280 --> 06:20.170
vào và danh sách mục tiêu của chúng ta.

06:20.500 --> 06:22.300
Vì vậy, chúng ta hãy làm điều này đầu tiên.

06:22.300 --> 06:25.000
Hãy nối các trạng thái vào đầu vào của chúng ta.

06:25.000 --> 06:33.640
Vì vậy, chúng tôi lấy danh sách đầu vào của mình và chúng tôi sử dụng hàm append để thêm trạng thái ghi nhớ trạng thái đầu

06:33.640 --> 06:35.950
vào của bước đầu tiên của chuỗi.

06:36.820 --> 06:42.260
Và sau đó chúng tôi sẽ thêm mục tiêu của bước đầu tiên vào danh sách mục tiêu của chúng tôi.

06:42.280 --> 06:48.340
Và để làm điều này, chúng tôi lấy danh sách các mục tiêu và cũng như chúng tôi sử dụng hàm append để nối thêm mục tiêu đầu

06:48.340 --> 06:49.000
tiên này.

06:49.330 --> 06:50.260
Chúng ta bắt đầu.

06:50.290 --> 06:51.190
Sắp xong.

06:51.190 --> 06:55.990
Và bây giờ chúng ta cần trả lại những thứ cuối cùng, tất nhiên là những thứ chúng ta cần.

06:55.990 --> 06:58.300
Đó là những gì chúng tôi đã nói ở phần đầu của hướng dẫn.

06:58.330 --> 07:01.600
Các đầu vào và mục tiêu hiện đã được cập nhật.

07:01.840 --> 07:03.550
Vì vậy, chúng tôi sẽ thêm ở đây trở lại.

07:04.000 --> 07:06.280
Sau đó, chúng tôi sẽ nhận đầu vào của chúng tôi trước.

07:06.280 --> 07:07.480
Nhưng sau đó vẫn vậy.

07:07.480 --> 07:14.230
Trước tiên, chúng ta cần chuyển đổi chúng thành một mảng numpy, sau đó thực hiện chuyển đổi kiểu

07:14.230 --> 07:21.550
để đảm bảo rằng chúng ta có một kiểu duy nhất với kiểu D là bằng và P float 30 giống nhau.

07:21.640 --> 07:27.940
Và sau đó chúng tôi chuyển đổi nó thành một máy căng đuốc vì tất nhiên chúng tôi đang làm việc với PyTorch, vì vậy điều

07:27.940 --> 07:29.440
đó hoàn toàn bắt buộc.

07:29.440 --> 07:33.280
Và vì vậy tôi đang sử dụng ngọn đuốc từ NumPy.

07:33.730 --> 07:36.010
Chức năng một lần nữa.

07:36.990 --> 07:38.980
Và điều đó cung cấp cho chúng tôi đầu vào của chúng tôi.

07:39.000 --> 07:39.510
Hoàn hảo.

07:39.510 --> 07:42.060
Và bây giờ chúng ta hãy làm tương tự cho mục tiêu.

07:42.330 --> 07:44.440
Bây giờ chúng ta sẽ sử dụng thủ thuật này, thủ thuật này nhanh hơn.

07:44.460 --> 07:46.710
Chúng ta sẽ xếp các mục tiêu lại với nhau.

07:46.710 --> 07:53.730
Và để làm điều này, trước tiên chúng ta cần sử dụng thư viện ngọn đuốc của mình, bởi vì chúng ta sẽ sử dụng hàm ngăn

07:53.820 --> 07:56.700
xếp bằng ngọn đuốc để xếp chồng các mục tiêu.

07:57.060 --> 07:57.450
Được rồi.

07:57.450 --> 08:03.960
Và vì vậy, về cơ bản dòng mã này trả về các đầu vào và mục tiêu mà chúng tôi vừa cập nhật thông qua thuật

08:03.960 --> 08:09.000
toán nguồn theo dõi tính đủ điều kiện này hoặc chúng ta có thể gọi nó là học từng bước.

08:09.000 --> 08:14.910
Và bây giờ xin chúc mừng, chúng tôi đã sẵn sàng để thực hiện khóa đào tạo cuối cùng vì về cơ

08:14.910 --> 08:20.910
bản khóa đào tạo bao gồm giảm thiểu sự khác biệt bình phương giữa dự đoán đầu vào của chúng tôi và mục tiêu.

08:20.910 --> 08:22.710
Vì vậy, hãy làm cho AI của chúng ta trở nên thông minh.

08:22.710 --> 08:25.050
Nó sẽ trở nên thông minh trong hướng dẫn tiếp theo.

08:25.050 --> 08:26.910
Và như vậy cho đến lúc đó, hãy tận hưởng tôi.
