WEBVTT

00:00.240 --> 00:03.640
Xin chào và chào mừng một lần nữa đến với mô-đun xe tự lái của chúng tôi.

00:03.660 --> 00:10.200
Vì vậy, trong hướng dẫn này, tôi sẽ giải thích môi trường mà chúng ta sẽ triển khai trí tuệ nhân tạo của mình, và điều đó tất

00:10.200 --> 00:16.020
nhiên sẽ chứa chiếc xe mà chúng ta sẽ đào tạo để tự lái và tránh chướng ngại vật và trên đó chúng ta sẽ

00:16.020 --> 00:20.820
vẽ một số con đường và một số khối để xe của chúng ta di chuyển xung quanh chúng.

00:20.970 --> 00:28.680
Vì vậy, sau này chúng tôi sẽ xây dựng trí thông minh nhân tạo này để đào tạo chiếc xe này, lái xe trên đường mà không vượt qua

00:28.680 --> 00:33.630
giới hạn và tránh một số chướng ngại vật mà chúng tôi sẽ đặt bên trong đường.

00:33.900 --> 00:35.730
Vì vậy, đây là một thử thách khá thú vị.

00:35.730 --> 00:37.920
Và thực tế có hai tệp riêng biệt.

00:37.920 --> 00:40.560
Như bạn có thể thấy, có tệp AI python.

00:40.590 --> 00:46.980
Đó là trí thông minh nhân tạo của chúng tôi sẽ thực hiện tất cả các khóa đào tạo để đào tạo về ô tô, cách tự lái, lái xe.

00:46.980 --> 00:51.840
Và chúng ta có bản đồ, tệp p đó là mã tạo nên tất cả môi trường này.

00:51.840 --> 00:56.820
Vì vậy, đây là đoạn mã thực sự là 200 dòng mã nhiều hơn một chút.

00:56.820 --> 01:02.580
Vì vậy, mã này thường không liên quan đến AI, nó chỉ là mã để tạo môi trường để tạo bản

01:02.580 --> 01:03.150
đồ.

01:03.150 --> 01:08.340
Vì vậy, tôi sẽ đi qua từng phần một để giải thích, nhưng chúng tôi sẽ không triển khai

01:08.340 --> 01:13.470
từng dòng mã này từ đầu vì chúng tôi muốn tập trung vào trí tuệ nhân tạo.

01:13.470 --> 01:17.040
Nhưng chúng ta hãy vẫn lần lượt xem qua các phần để hiểu chuyện gì đang xảy ra.

01:17.130 --> 01:20.430
Vì vậy, trước tiên, chúng tôi nhập các thư viện cần thiết.

01:20.430 --> 01:21.870
Đó là cho bất kỳ mã nào.

01:21.870 --> 01:28.680
Chúng tôi cần một số thư viện để thực hiện một số tác vụ hiệu quả hơn, sau đó chúng tôi nhập tất cả các gói lưu trữ.

01:28.680 --> 01:33.000
Vì vậy, điều đó không quan trọng lắm vì tất cả điều này là cụ thể để lưu trữ.

01:33.030 --> 01:39.030
Chúng tôi đang sử dụng KB để tạo bản đồ và vì vậy chúng tôi đang nhập rất nhiều lớp và đối tượng để có thể tạo bản

01:39.030 --> 01:41.580
đồ này và thêm một số công cụ vào bản đồ.

01:42.030 --> 01:44.250
Được rồi, dòng này quan trọng.

01:44.250 --> 01:52.440
Dòng này liên quan đến AI, vì về cơ bản đây là nơi chúng ta nhập bộ não của chúng ta, bộ não của chiếc

01:52.440 --> 01:56.160
xe, sẽ là một đối tượng của lớp cồn cát này.

01:56.160 --> 02:00.300
Và lớp cồn cát chính là trí tuệ nhân tạo của chúng ta.

02:00.300 --> 02:04.410
Bạn sẽ thấy chúng tôi sẽ thực hiện VQ trong lớp trong các hướng dẫn sau.

02:04.410 --> 02:09.390
Và như bạn có thể đoán, DCN là viết tắt của Deep Q Networks.

02:09.390 --> 02:14.910
Vì vậy, chúng tôi sẽ triển khai một mạng học Q sâu và sau đó khi nó đã sẵn sàng, chúng

02:14.910 --> 02:18.210
tôi sẽ nhập nó vào đây với dòng này từ AI.

02:18.210 --> 02:21.240
Và AI tất nhiên là tệp trăn AI của chúng tôi.

02:21.810 --> 02:22.230
Được chứ?

02:22.230 --> 02:24.300
Vì vậy, không thể chờ đợi để thực hiện điều này.

02:24.300 --> 02:29.430
Đây sẽ là một hành trình khá khó khăn, nhưng bạn sẽ thấy điều này sẽ rất thú vị

02:29.430 --> 02:32.730
vì nhờ có AI, chiếc xe sẽ có thể tự lái.

02:33.090 --> 02:33.660
Được rồi.

02:33.660 --> 02:38.790
Và bây giờ trước khi chuyển sang phần tiếp theo, chúng ta phải giải thích cách chúng ta sẽ đào tạo chiếc xe này.

02:38.820 --> 02:43.620
Tôi sẽ không giải thích về mạng nơ-ron ngay bây giờ, nhưng tôi sẽ giải thích ý tưởng về

02:43.620 --> 02:47.850
cách chúng ta sẽ huấn luyện ô tô tự lái và tránh chướng ngại vật.

02:48.150 --> 02:54.060
Vậy bạn biết đấy, trong cuộc sống thực, nếu bạn muốn điều khiển một chiếc ô tô thật tránh một số bức tường hoặc một số chướng

02:54.060 --> 02:55.530
ngại vật, bạn sẽ làm gì?

02:55.560 --> 03:00.960
Bạn chắc chắn sẽ không lấy những bức tường thật hoặc những chướng ngại vật lớn thực sự và đập chiếc xe của bạn lên chúng.

03:00.960 --> 03:02.640
Điều đó sẽ khiến bạn tốn rất nhiều tiền.

03:02.640 --> 03:10.140
Thay vào đó, một ý tưởng thông minh hơn sẽ là phạt xe của bạn, không phải khi nó đập vào tường hoặc chướng ngại vật, mà

03:10.140 --> 03:12.540
là khi nó đi vào một bãi cát.

03:12.540 --> 03:14.040
Vì vậy, nó giống như bạn có một lĩnh vực.

03:14.040 --> 03:19.620
Cánh đồng này có một số con đường mà ô tô phải lưu lại và các con đường được phân định bởi một số cát.

03:19.620 --> 03:25.410
Và mỗi lần xe đi trên cát, giống như đang gặp chướng ngại vật bởi vì một khi xe đi vào bãi

03:25.440 --> 03:30.330
cát, nó sẽ bị giảm tốc độ và chúng ta chắc chắn rằng xe sẽ bị phạt.

03:30.330 --> 03:31.590
Nó bị trừng phạt vì điều đó.

03:31.590 --> 03:35.070
Và đó là một trong những điểm thiết yếu của trí tuệ nhân tạo.

03:35.070 --> 03:39.690
Phần thưởng tồi tệ đến bất cứ khi nào chiếc xe đi trên bãi cát và bị giảm tốc độ.

03:40.050 --> 03:40.590
Được rồi.

03:40.590 --> 03:47.610
Và do đó, ở đây tôi giới thiệu X cuối cùng và Y cuối cùng, là tọa độ của điểm cuối cùng trong bộ nhớ khi

03:47.610 --> 03:50.190
chúng ta vẽ một số cát trên bản đồ.

03:50.550 --> 03:51.030
Được rồi.

03:51.030 --> 03:57.750
Và sau đó chúng ta có được trí thông minh nhân tạo của mình, cái mà chúng ta gọi là não, và nó chứa mạng lưới thần kinh của chúng ta.

03:57.750 --> 04:02.970
Và chúng ta sẽ gọi nó là bộ não, bởi vì đây thực sự là bộ não của chiếc xe và chứa mạng lưới thần kinh

04:02.970 --> 04:03.690
của chúng ta.

04:04.170 --> 04:04.620
Được rồi.

04:04.620 --> 04:10.080
Vì vậy, trong dòng mã này, như bạn có thể thấy, tôi đang tạo một đối tượng của lớp dune.

04:10.080 --> 04:14.280
Tôi sẽ nhắc nhở các lớp và các đối tượng là gì, nhưng não là đối tượng.

04:14.280 --> 04:19.470
DCN là lớp và năm ba và 0. 9 là các đầu vào của lớp.

04:19.470 --> 04:20.790
Vì vậy, điều đó rất đơn giản.

04:20.790 --> 04:26.700
Năm tương ứng với các trạng thái được mã hóa vectơ của năm chiều.

04:26.700 --> 04:31.500
Chúng ta sẽ thấy những gì họ đang mô tả một cách hoàn hảo, những gì đang xảy ra trong môi trường trên bản đồ.

04:31.500 --> 04:34.980
Sau đó, ba là số lượng hành động sẽ có.

04:34.980 --> 04:42.420
Ba hành động có thể thực hiện là đi trái, đi thẳng hoặc đi phải và 0. 9 là tham số gamma trong thuật toán

04:42.570 --> 04:43.710
học sâu.

04:44.070 --> 04:44.430
Được rồi.

04:44.430 --> 04:46.770
Và sau đó chúng ta có hai vòng quay hành động.

04:46.770 --> 04:52.920
Vì vậy, hành động hai phép quay là một vectơ gồm ba phần tử, 0, 20 và -20.

04:53.010 --> 04:59.940
Và vì vậy chúng tôi phải làm điều này bởi vì các hành động được mã hóa bởi ba số không một.

05:00.060 --> 05:04.650
Hai, và điều đó tương ứng với các chỉ số của hành động này là hai vectơ xoay.

05:04.650 --> 05:13.680
Vì vậy, ví dụ, nếu hành động được chọn tại thời điểm T bằng 0, thì số không tương ứng với chỉ số của hành động này

05:13.680 --> 05:21.210
đối với vectơ quay và giá trị của chỉ số 0 là 0 và do đó chúng ta sẽ đi thẳng.

05:21.240 --> 05:28.740
Sau đó, nếu hành động được chọn là một, thì một hành động tương ứng với chỉ số của hành động này đối với vectơ quay

05:28.740 --> 05:32.550
và giá trị của vectơ này có chỉ số một là 20.

05:32.550 --> 05:38.760
Vì vậy, 20 tương ứng với một vòng quay 20 độ và điều đó có nghĩa là lõi sẽ đi sang bên phải 20 độ.

05:39.030 --> 05:45.780
Và sau đó nếu hành động được chọn là hai, cũng là hai tương ứng với chỉ số, hai hành động này đối

05:45.780 --> 05:52.260
với vectơ quay và do đó lõi sẽ thực hiện quay -20 độ và do đó nó sẽ chuyển sang trái.

05:52.350 --> 05:58.860
Được rồi, sau đó chúng tôi giới thiệu biến phần thưởng cuối cùng, vì ở mỗi trạng thái, chúng tôi sẽ nhận được

05:58.860 --> 06:00.000
phần thưởng cuối cùng.

06:00.000 --> 06:04.920
Vì vậy, hãy nhớ, nếu thẻ không đi vào một số cát, thì phần thưởng sẽ là dương.

06:04.920 --> 06:09.390
Và nếu thẻ có ý nghĩa nào đó, thì, nó sẽ nhận được một phần thưởng tệ.

06:09.390 --> 06:14.580
Và tại mỗi thời điểm, biến này sẽ chứa phần thưởng này mà nó nhận được tại mỗi thời điểm.

06:14.580 --> 06:21.570
T Và sau đó chúng tôi khởi tạo khóa học này, là một vectơ sẽ chứa phần thưởng, không phải tất cả chúng, mà là phần

06:21.570 --> 06:26.910
thưởng trên một cửa sổ trượt để bạn biết đấy, chúng tôi có thể tạo đường cong về điểm trung

06:26.910 --> 06:28.920
bình của phần thưởng. theo thời gian.

06:29.250 --> 06:35.070
Được rồi, trong phần mã này, chúng tôi khởi tạo bản đồ, vì vậy chúng tôi khởi tạo, ví dụ,

06:35.070 --> 06:35.940
biến cen.

06:35.940 --> 06:37.050
Vì vậy, đó là điều quan trọng.

06:37.050 --> 06:42.870
Biến thực sự sẽ là một mảng trong đó các ô sẽ là pixel của bản đồ.

06:42.990 --> 06:50.340
Và trong mỗi ô, chúng ta sẽ có một nếu có ý nghĩa và một số 0 nếu không có xu ở đầu, chúng ta sẽ

06:50.340 --> 06:52.050
không vẽ được gì cả.

06:52.050 --> 06:57.660
Vì vậy, sẽ không có ý nghĩa gì cả và do đó tất cả các ô của mảng gửi sẽ bằng không.

06:57.660 --> 06:59.220
Vì vậy, sẽ có số không ở khắp mọi nơi.

06:59.220 --> 07:05.340
Và ngay sau khi chúng tôi vẽ một số cát, các ô mà chúng tôi vẽ giác quan sẽ nhận được một và chúng tôi khởi

07:05.340 --> 07:09.840
tạo các mảng với tất cả các số không ngay tại đây, cát bằng và p số không.

07:10.110 --> 07:13.290
Sau đó, chúng tôi có điều quan trọng này là mục tiêu.

07:13.290 --> 07:17.430
Vì vậy, mục tiêu là điểm trong bản đồ mà chúng tôi sẽ huấn luyện xe hơi đến.

07:17.430 --> 07:19.410
Vì vậy, nó giống như một điểm đến.

07:19.650 --> 07:21.360
Vậy mục tiêu này sẽ là gì?

07:21.360 --> 07:24.840
Đây sẽ là góc trên bên trái của bản đồ.

07:24.840 --> 07:28.320
Vì vậy, chúng ta sẽ huấn luyện xe đi đến góc trên bên trái của bản đồ.

07:28.320 --> 07:33.030
Và sau đó khi nó đến góc trên bên trái của bản đồ, thì chúng tôi sẽ huấn luyện nó đi đến góc dưới

07:33.030 --> 07:34.230
cùng bên phải của bản đồ.

07:34.230 --> 07:36.450
Vì vậy, chúng ta có thể hình dung kịch bản sau đây.

07:36.450 --> 07:42.540
Góc trên bên trái của bản đồ là sân bay của một thành phố và góc dưới bên phải của bản đồ

07:42.540 --> 07:44.280
là trung tâm của thành phố.

07:44.280 --> 07:50.040
Và chúng tôi sẽ chuyển sang Taxi hoặc Uber để thực hiện một số chuyến đi khứ hồi giữa sân bay và trung tâm thành phố.

07:50.040 --> 07:55.530
Và tất nhiên, chúng tôi sẽ làm cho bài kiểm tra khó khăn hơn đối với chiếc taxi này bằng cách vẽ một số con đường

07:55.530 --> 08:01.140
ngày càng khó hơn và thêm ngày càng nhiều chướng ngại vật trên đường để xem liệu taxi có thể xoay sở để đi từ sân bay

08:01.140 --> 08:02.700
về trung tâm thành phố hay không.

08:02.700 --> 08:04.050
Vì vậy, điều này sẽ rất vui.

08:04.050 --> 08:08.940
Và đó là lý do tại sao ở đây tôi đang đặt tọa độ của mục tiêu đầu tiên.

08:08.940 --> 08:12.480
Đó là sân bay, ở phía trên bên trái của màn hình.

08:12.690 --> 08:16.140
Vì vậy, bản đồ sẽ giống như một hình vuông như thế này.

08:16.620 --> 08:21.780
Và tọa độ của điểm gốc, đó là tọa độ, số 0 ở ngay đây.

08:22.080 --> 08:25.110
Và sau đó lớn hơn là khoảng cách này ở đây.

08:25.110 --> 08:31.590
Vì vậy, các tọa độ, 20 và lớn hơn, -20 do đó sẽ nằm ngay tại đây, góc trên bên trái của bản

08:31.590 --> 08:32.010
đồ.

08:32.570 --> 08:35.510
Và tại sao tôi lại chọn 20 chứ không phải 0?

08:35.540 --> 08:40.180
Đó là bởi vì chúng tôi muốn đào tạo chiếc xe, không phải lao vào các bức tường.

08:40.190 --> 08:42.530
Bạn biết đấy, chúng tôi cũng muốn huấn luyện nó để tránh những bức tường.

08:42.530 --> 08:46.530
Và do đó, mục tiêu không được bằng 0 vì chúng tôi không muốn xe chạm vào tường.

08:46.550 --> 08:47.960
Chúng tôi muốn chạm vào mục tiêu.

08:47.960 --> 08:49.370
Vì vậy, chúng ta phải đặt nó ngay tại đây.

08:50.000 --> 08:55.160
Và sau đó, tôi chỉ giới thiệu biến khoảng cách cuối cùng, biến khoảng cách hiện tại từ ô

08:55.160 --> 08:58.190
tô đến mục tiêu và tôi đang khởi tạo bằng 0.

08:58.890 --> 08:59.400
Được rồi.

08:59.400 --> 09:02.160
Và bây giờ là lúc để tạo ra chiếc xe và trò chơi.

09:02.160 --> 09:06.540
Vì vậy, chúng ta sẽ tạo ra hai lớp, một lớp cho ô tô và một lớp cho trò chơi.

09:06.540 --> 09:10.800
Và bên trong các lớp này, chúng ta sẽ tạo ra một số kết nối bằng mắt của mình.

09:10.890 --> 09:13.020
Vì vậy, chúng tôi sẽ làm điều đó trong hướng dẫn tiếp theo.

09:13.020 --> 09:14.490
Và cho đến khi đó, hãy tận hưởng.

09:14.490 --> 09:14.940
TÔI.
