Xin chào và chào mừng đến với hướng dẫn này.
Bây giờ chúng ta có bộ não của mô hình.
Chúng tôi cũng có trình tối ưu hóa.
Vì vậy, về cơ bản, chúng tôi đã sẵn sàng đào tạo các đặc vụ khác nhau của mình.
Đó là bộ não khác nhau của chúng ta.
Vì vậy, đó là từ bây giờ chúng ta sẽ tạo ra hàm tàu lớn này sẽ chứa tất cả các thuật toán a3c.
Và do đó, những gì chúng ta sắp thực hiện trong chuyến tàu này, tệp P đó chỉ là hàm tàu lớn này.
Họ sẽ chỉ là chức năng tàu lớn này, không có gì khác, không có lớp học.
Nhưng chúng tôi sẽ sử dụng chức năng đào tạo này trong bước cuối cùng của mô-đun này với mã chính.
Vậy là xong.
Nhưng trước khi chúng tôi bắt đầu, bạn có thể nhận thấy rằng, tốt, trước tiên chúng tôi nhập một số thư viện.
Vì vậy, đó là các thư viện cổ điển với mô-đun ngọn đuốc, ý tôi là thư viện ngọn đuốc, sau
đó là thư viện cuối để tạo môi trường Atari, sẽ là đột phá.
Sau đó, tất nhiên chúng tôi sẽ nhập lớp đang hoạt động của chúng tôi từ tệp mô hình này.
Và cuối cùng, chúng tôi sẽ sử dụng biến từ torch undergrad để chạy các tính toán hiệu suất cao của gradient nhờ
các đồ thị động.
Và sau đó, chúng tôi có chức năng này đảm bảo chia sẻ grats mà tôi không muốn dành quá nhiều thời gian cho việc này
bởi vì trước tiên đây chỉ là một chức năng sẽ đảm bảo mọi thứ hoạt động chính xác nếu mô hình được đại
lý sử dụng không có bất kỳ chia sẻ nào dốc.
Vì vậy, đó là lý do tại sao nó được gọi là ensure shared grats.
Và lý do khác là tôi không nghĩ rằng chức năng này là cần thiết, nhưng chúng ta không bao giờ biết.
Và ít nhất với điều này sẽ chắc chắn 100% rằng mã sẽ thực thi đúng cách.
Nhưng điều đó không thực sự quan trọng.
Những gì chúng ta phải tập trung vào là chức năng đào tạo này mà chúng ta sẽ bắt đầu thực hiện ngay bây giờ.
Vì vậy, chúng tôi bắt đầu, Dev và đào tạo.
Chúng tôi sẽ gọi nó đơn giản là tàu hỏa.
Và hàm train này sẽ nhận một số đối số.
Đầu tiên là thứ hạng.
Tôi sẽ giải thích nó là gì trong phần thứ hai.
Tham số thứ hai là tham số để tất cả các tham số của môi trường, sau đó tham số
thứ ba sẽ được chia sẻ mô hình.
Vì vậy, bạn biết đấy, mô hình được chia sẻ là những gì đại lý sẽ nhận được để thực hiện khám phá nhỏ của mình trên một
số bước nhất định.
Và cuối cùng, đối số cuối cùng sẽ là trình tối ưu hóa.
Đó là một trong những chúng tôi đã thực hiện trước đó.
Rất hoàn hảo.
Đó là bốn lập luận của chúng tôi.
Và bây giờ chúng tôi đã sẵn sàng để bắt đầu thực hiện chức năng tàu này.
Vì vậy, điều đầu tiên chúng ta sẽ làm là, bạn biết đấy, bạn nhớ a3c là viết tắt của gì.
Nó là viết tắt của một tác nhân phê bình tích cực đồng bộ.
Vì vậy, trong a3c, có một đồng bộ.
Vì vậy, như bạn đã hiểu, chúng tôi phải đồng bộ hóa từng tác nhân huấn luyện và để đồng bộ hóa chúng,
chúng tôi sẽ sử dụng thứ hạng để chuyển từng hạt giống với thứ hạng này.
Vì vậy, tham số thứ hạng này ở đây chỉ là thay đổi hạt giống để mỗi tác nhân đào tạo được đồng bộ hóa.
Vì vậy, ví dụ, nếu có n nhân viên đào tạo, thì các cấp bậc sẽ đi từ một đến N và sẽ có
một số nguyên cho mỗi đại lý từ một đến n.
Vì vậy, khi chúng ta chuyển hạt giống theo một chuỗi, tất cả các số giả ngẫu nhiên được tạo bởi chuỗi sẽ hoàn
toàn độc lập với các chuỗi khác.
Tuy nhiên, hạt giống là những con số cố định, vì vậy khi chúng ta tái tạo trải nghiệm, chúng ta sẽ tìm thấy chính xác những
sự kiện giống nhau và đó là bởi vì nó có tính xác định đối với hạt giống.
Vì vậy, điều quan trọng là phải hiểu điều đó.
Và đó là lý do tại sao điều đầu tiên chúng ta cần làm là đồng bộ hóa từng tác nhân đào tạo bằng cách sử dụng
cấp bậc ở đây để chuyển hạt giống với cấp bậc.
Vì vậy, chúng ta hãy làm điều này.
Để làm điều đó, chúng tôi sẽ sử dụng thư viện ngọn đuốc của chúng tôi.
Sau đó, chúng ta sẽ lấy hạt giống bằng dấu gạch dưới thủ công, dấu ngoặc đơn hạt giống.
Đây là một chức năng.
Và bây giờ chúng ta sẽ lấy hạt giống của tất cả các tác nhân mà chúng ta có thể truy cập bằng params dot seed và
thay đổi chúng theo thứ hạng để đồng bộ hóa từng tác nhân này.
Chúng tôi sẽ chỉ thêm ở đây cộng với thứ hạng.
Và điều đó sẽ thay đổi hạt giống có cấp bậc để tước quyền của mỗi đại lý đào tạo vì có một hạt giống
cho mỗi đại lý đào tạo.
Được rồi, điều đầu tiên đã xong.
Và bây giờ là bước tiếp theo.
Bước tiếp theo là lấy môi trường.
Vì vậy, chúng ta sẽ tạo một biến mới mà chúng ta sẽ gọi là env và bây giờ
chúng ta sẽ sử dụng hàm create Atari end từ mô-đun cuối để tạo môi trường cho breakout.
Đó là để có được môi trường của sự đột phá.
Vì vậy, chúng tôi sử dụng chức năng này, tạo Atari và.
Và bây giờ chúng ta chỉ phải nhập một đối số, là các tham số của môi trường và chúng ta có chúng
vì đây là một trong những đầu vào của hàm train.
Đây là tham số này sẽ là tham số của môi trường breakout.
Và do đó để có được môi trường đột phá, chúng tôi lấy đối số tham số này, sau đó chấm và sau
đó chúng tôi nhận được tên env mà trong tương lai nằm trong mã tiếp theo với hàm chính sẽ thực
thi toàn bộ mã sẽ là năm đột phá.
Được rồi.
Vì vậy, điều đó mang lại cho chúng tôi môi trường hoàn hảo.
Và bây giờ bước tiếp theo là sắp xếp hạt giống của môi trường trên một trong các tác nhân.
Và tại sao chúng tôi làm điều đó?
Đó là bởi vì, hãy nhớ rằng, mỗi tác nhân của mô hình a3c có tầm nhìn riêng về môi trường, giống như bản sao
môi trường của chính nó.
Và do đó, chúng ta cần sắp xếp từng tác nhân trên một phiên bản môi trường cụ thể.
Và để làm điều đó, chúng ta sẽ sử dụng hạt giống vì mỗi hạt giống xác định một môi trường cụ thể.
Vì vậy, bằng cách liên kết một hạt giống khác nhau cho mỗi tác nhân, chúng ta sẽ nhận được chính xác những gì chúng ta muốn.
Đó là mỗi đại lý sẽ có môi trường riêng.
Và vì vậy làm thế nào chúng ta có thể làm điều đó?
Chúng ta có thể lấy môi trường của chúng ta, sau đó thêm nó, sau đó sử dụng chức năng hạt giống để chọn hạt giống mà chúng ta
muốn lấy cho môi trường.
Và bây giờ để sắp xếp hạt giống của môi trường với hạt giống của tác nhân, chúng ta
chỉ cần lấy nó vì nó tương ứng với hạt giống của tác nhân đã được chuyển đổi nhờ cấp bậc để có được tác nhân đào tạo đồng bộ
này bởi vì họ tất cả trên các hạt giống khác nhau.
Vì vậy, chúng ta chỉ cần đặt nó ở đây.
Và điều này sẽ sắp xếp hạt giống của môi trường với một trong những tác nhân.
Được chứ.
Bây giờ chúng ta sẽ lấy mô hình của chúng ta, đó là ba bộ não quan trọng của chúng ta.
Và đó là bây giờ chúng ta sẽ sử dụng lớp phê bình tích cực từ tệp mô hình của chúng ta.
Vì vậy, về cơ bản chúng ta sẽ tạo một đối tượng của lớp diễn viên này và chúng ta sẽ gọi đây là mô hình đối
tượng hoặc bộ não, nếu bạn muốn.
Nhưng về cơ bản đối tượng này sẽ chứa tất cả các chập, STM, kết nối đầy đủ tuyến tính và chức
năng chuyển tiếp để truyền tín hiệu.
Vì vậy, về cơ bản nó sẽ chứa bộ não của diễn viên và nhà phê bình với khả năng truyền tín hiệu
khắp bộ não để có được đầu ra cuối cùng.
Vì vậy, chúng ta hãy làm điều này.
Hãy tạo mô hình của chúng tôi.
Vì vậy, như chúng tôi đã nói, chúng tôi muốn gọi đây là mô hình đối tượng.
Và do đó, chúng tôi tạo một đối tượng của lớp hành động và do đó chúng tôi lấy lớp, tác nhân, nhà phê bình của mình, và bây giờ nhớ
những đối số nào chúng tôi cần nhập.
Đó thực sự là các đối số của hàm init nên chúng ta không cần phải nhập nó vào.
Đó là những gì chúng ta phải làm để sử dụng đối tượng trong phương thức init.
Nhưng sau đó các đối số mà chúng ta phải nhập là đầu vào nom là hình dạng đầu vào.
Đó là kích thước của đầu vào, hình ảnh của chúng tôi và không gian hành động chứa tập hợp các hành động, bạn
biết đấy.
Vì vậy, hãy nhập các đối số này trong hàm train.
Vì vậy, điều đầu tiên, chúng tôi có thể lấy nó bằng môi trường của chúng tôi và chấm và sau đó chúng tôi sử dụng không gian quan sát.
Vì vậy, đó là không gian của các quan sát sau đó dut và sau đó để có được số lượng đầu vào mà chúng ta có được hình dạng.
Dấu ngoặc nhọn số 0.
Được rồi.
Vì vậy, đó là bốn đầu vào tê liệt.
Và bây giờ là không gian hành động.
Chà, điều đó cũng gần giống nhau.
Nhưng chúng ta cần lấy nó từ môi trường của chúng ta mà chúng ta được nhập khẩu.
Sau đó dut và sau đó là không gian hành động.
Được rồi.
Và điều đó cung cấp cho chúng ta các đối số mà chúng ta cần nhập khi tạo một đối tượng.
Đạo đức của hành vi để tạo ra một giai cấp.
Vì vậy, bây giờ chúng ta có mô hình của mình, và bây giờ bước tiếp theo là chuẩn bị trạng thái đầu vào của chúng ta.
Vì vậy, hãy nhớ rằng, chúng tôi vẫn đang thực hiện học tập củng cố sâu.
Vì vậy, các trạng thái đầu vào là các hình ảnh đầu vào và do đó đây ban đầu sẽ là một mảng numpy sẽ chứa một
kênh vì chúng ta sẽ làm việc với các hình ảnh đen trắng và nó sẽ có kích thước
là 42 x 42.
Nhưng điều quan trọng là phải hiểu và ghi nhớ ở đây rằng các trạng thái đầu vào là hình ảnh đầu vào.
Vì vậy, đầu tiên, những gì chúng ta phải làm là lấy số, sau đó chúng ta sẽ chuyển nó thành một máy căng ngọn đuốc.
Nhưng bước đầu tiên như những gì chúng ta đã làm trước đây, là để có được một đế chế đúng đắn và để có được nó, nó thực sự
khá đơn giản.
Đầu tiên, chúng ta cần tạo một biến cho trạng thái đầu vào, mà chúng ta sẽ gọi là trạng thái
và điều này để lấy mảng, chúng ta chỉ cần lấy môi trường của chúng ta rồi thêm vào đó và sau đó sử dụng hàm đặt lại.
Và điều này sẽ khởi tạo trạng thái dưới dạng một mảng kích thước lần lượt là 42 x 42, một có nghĩa là một kênh, vì vậy hình ảnh màu
đen trong màu trắng và 42 x 42 tất nhiên là kích thước của hình ảnh, số pixel trên chiều
rộng và số pixel trên chiều cao.
Vì vậy, về cơ bản đó chỉ là các thứ nguyên và đó là những thứ mà chúng tôi sẽ làm việc với.
Và bây giờ, chúng ta đã thực sự có điều này, bởi vì điều này sẽ giúp chúng ta có được những hình ảnh có kích thước như vậy
trong các mảng, bây giờ chúng ta có thể chuyển đổi chúng thành cảm biến ngọn đuốc.
Và để làm tốt điều này, chúng tôi sẽ cập nhật lại trạng thái vì chúng tôi không cần giữ lại vi-rút.
Và đó là nơi chúng tôi sử dụng mô-đun ngọn đuốc.
Và hãy nhớ rằng, chúng tôi đã làm điều đó vì sự diệt vong.
Chúng tôi sử dụng hàm từ dấu gạch dưới num bằng dấu ngoặc đơn và bên trong hàm này, chúng tôi cần nhập số mà
chúng tôi muốn chuyển đổi thành một tensor ngọn đuốc.
Và đó là trạng thái.
Phiên bản trước của trạng thái trong mảng numpy sẽ trở thành bằng cách áp dụng từ chúng bằng chức năng một bộ
căng ngọn đuốc.
Vì vậy, điều đó chỉ tạo ra một tensor từ trạng thái và bây giờ chúng ta chỉ cần khởi tạo biến done.
Hãy nhớ rằng biến thực hiện thường là biến cho biết nếu một tập kết thúc hoặc nếu trò chơi
kết thúc, ở đây chúng tôi chỉ muốn giới thiệu biến đã hoàn thành này và khởi tạo nó thành true để chỉ định rằng
biến đã hoàn thành này sẽ bằng true khi trò chơi được thực hiện.
Vì vậy, điều đó sẽ hữu ích cho sau này để AI không chơi vô thời hạn để bùng phát.
Được rồi.
Vì vậy, về cơ bản đó là sự khởi đầu của hàm train này với một số khởi tạo và một số việc mà chúng
ta phải làm.
Phần quan trọng nhất ở đây là chúng tôi phải đồng bộ hóa từng tác nhân đào tạo.
Vậy đó là nguyên tắc 1/1 của mô hình a3c mà chúng ta phải áp dụng.
Và bây giờ trong phần hướng dẫn tiếp theo chúng ta sẽ tiến hành đồng bộ hóa với mô hình được chia sẻ.
Đừng quên rằng có các mô hình khác nhau, nhưng cũng có mô hình dùng chung, đó là mô hình mà tất
cả các đại lý chia sẻ.
Và vì vậy chúng ta phải đồng bộ hóa với mô hình chia sẻ này để mỗi tác nhân có thể nhận được mô hình
chia sẻ này để tiến hành thăm dò nhỏ ở một số bước nhất định.
Vì vậy, đó là những gì chúng ta sẽ làm trong hướng dẫn tiếp theo.
Và cho đến khi đó, hãy tận hưởng.
TÔI.