Xin chào và chào mừng bạn đến với hướng dẫn Python này.
Được rồi, vì vậy hôm nay chúng tôi sẽ thực hiện chức năng cập nhật, chức năng này sẽ cập
nhật mọi thứ có để cập nhật ngay khi mắt đạt trạng thái mới.
Vì vậy, khi nó đạt đến trạng thái mới, bạn biết đấy, chúng tôi cần cập nhật hành động.
Hành động cuối cùng trở thành hành động mới được hiển thị, nhưng cũng là trạng thái cuối cùng trở thành trạng
thái mới.
Và cuối cùng, phần thưởng cuối cùng.
Điều đó trở thành phần thưởng mới mà chúng ta nhận được khi chơi hành động.
Vì vậy, đó là đường dẫn hợp lý xảy ra ngay sau khi chọn một hành động, chúng ta cần cập nhật tất cả các yếu
tố của quá trình chuyển đổi và tất nhiên chúng ta sẽ nhận được một chuyển đổi mới.
Vì vậy, chúng tôi sẽ phải nối quá trình chuyển đổi mới này vào bộ nhớ.
Và cuối cùng, chúng tôi cũng sẽ cập nhật cửa sổ phần thưởng của mình, bạn biết đấy, để theo dõi diễn biến của
quá trình đào tạo và hoạt động khám phá diễn ra như thế nào.
Nhưng điều quan trọng nhất mà bạn cần hiểu là bây giờ cuối cùng chúng ta cũng có thể tạo kết nối giữa
AI mà chúng ta đang triển khai ngay bây giờ với bản đồ của mình, bởi vì nếu chúng ta quay lại bản đồ
của mình, hãy nhớ rằng có chức năng cập nhật lớn này trong trò chơi lớp.
Vì vậy, đó là nơi chúng tôi thực sự làm trò chơi với chiếc xe và xác định cách chiếc xe sẽ bị
trừng phạt khi nó mắc lỗi.
Nhưng trong lớp trò chơi này, chúng tôi nhận thấy chức năng cập nhật này và trong chức năng cập nhật này, chúng tôi nhận
thấy hành động dòng này tương đương với cập nhật chấm não, ít phần thưởng hơn, ít tín hiệu hơn.
Và thực sự đây là chính xác những gì chúng tôi sắp làm.
Chúng tôi sắp thực hiện chức năng cập nhật này sẽ lấy phần thưởng cuối cùng và tín hiệu cuối cùng để có hành động
tiếp theo để chơi.
Vì vậy, chúng tôi không chỉ cập nhật tất cả các yếu tố khác nhau của quá trình chuyển đổi, mà chủ yếu là chúng tôi sẽ chơi
hành động mà chúng tôi nên chơi khi nhận được phần thưởng cuối cùng và tín hiệu cuối cùng.
Và tất nhiên, trong chức năng cập nhật này, chúng ta sẽ sử dụng chức năng select action mà chúng ta vừa thực hiện trước
đó.
Chúng tôi sẽ tích hợp chức năng Chọn Hành động trong chức năng cập nhật trong tương lai mà chúng tôi sắp thực hiện để chọn
hành động phù hợp để chơi bên cạnh việc thực hiện tất cả các bản cập nhật.
Vì vậy, điều đó thực sự quan trọng để tạo kết nối này với bản đồ.
Ngay bây giờ, những gì chúng tôi sắp làm cuối cùng là kết nối giữa AI của chúng tôi và trò chơi, trò chơi mà chúng tôi tạo
ra trong lớp học này.
Và vì vậy những gì chúng ta có thể làm bây giờ là trực tiếp thực hiện bản cập nhật này lần cuối cùng mà chúng ta là tín hiệu cuối cùng vì
đó chính xác là chức năng mà chúng ta sẽ thực hiện với hai đối số ở đây.
Và đúng như một lời nhắc nhanh, não là đối tượng của mắt chúng ta.
Đó là, nó là đối tượng của lớp.
Vì vậy, những gì chúng tôi sẽ làm bây giờ là chúng tôi sẽ sao chép bản cập nhật này, ít phần thưởng hơn, ít tín hiệu hơn và đó sẽ
là chức năng tiếp theo mà chúng tôi đang thực hiện và do đó tôi sẽ dán nó ở đây.
Sau đó, để cẩn thận, tôi chỉ xin đưa ra một số tên khác với những tên mà chúng ta có ở đây.
Bạn biết đấy, chúng tôi có ít phần thưởng hơn ở đây.
Và tôi không muốn nhầm lẫn phần thưởng cuối cùng này với phần thưởng này.
Điều đó có thể nguy hiểm.
Vì vậy, tôi sẽ thay lời cuối cùng ở đây bằng phần thưởng.
Và nhân tiện, tương tự cho ít tín hiệu hơn.
Hãy chỉ đặt tín hiệu hoặc thậm chí là tín hiệu mới để xác định rằng chúng ta muốn thực hiện cập nhật khi đạt đến trạng
thái mới và do đó nhận được tín hiệu mới.
Nhưng sau đó, tất nhiên, phần thưởng này ở đây sẽ là phần thưởng cuối cùng mà chúng tôi nhận được ở đây, bạn biết đấy, khi
đi lên một bãi cát hoặc tệ hơn, đến quá gần một cạnh của bản đồ.
Đó là nơi chúng tôi xác định phần thưởng cuối cùng.
Phần thưởng cuối cùng này sẽ là đầu vào của chức năng cập nhật.
Vì vậy, đó là lý do tại sao chúng tôi có ít phần thưởng hơn ở đây.
Nhưng ngay ở đây tôi chỉ đặt một cái tên khác cho phần thưởng đối số để không nhầm lẫn với nó.
Lời cuối cùng ở đây.
Được rồi.
Vì vậy, đây là chức năng cập nhật.
Và bây giờ chúng ta hãy đi vào bên trong nó và làm hai việc này.
Đó là cập nhật tất cả các yếu tố của quá trình chuyển đổi của chúng tôi và tất nhiên, chọn hành động.
Được chứ.
Vậy chúng ta cần cập nhật những gì đầu tiên?
Như bạn đã hiểu, chúng tôi muốn cập nhật khi đạt đến trạng thái mới.
Vì vậy, điều đầu tiên chúng tôi sẽ cập nhật rõ ràng là trạng thái mới này.
Đó là trạng thái mới mà chúng tôi đang đạt tới.
Vì vậy, tôi sẽ gọi đây là trạng thái mới, trạng thái mới và sau đó là bằng.
Và vậy làm thế nào chúng ta có thể có được trạng thái mới này?
Tất nhiên, điều đó phụ thuộc vào tín hiệu, tín hiệu mới mà các cảm biến vừa phát hiện.
Và xin nhắc lại, trạng thái là bản thân tín hiệu bao gồm ba tín hiệu của cảm biến, tín hiệu một, tín
hiệu hai và tín hiệu ba, cộng với định hướng và định hướng trừ.
Đó là trạng thái của chúng tôi.
Vì vậy, hãy chắc chắn hiểu rằng tín hiệu là trạng thái.
Nhưng ngay bây giờ nó là một danh sách đơn giản của năm yếu tố.
Và vì đây sẽ là đầu vào của mạng nơ-ron, hãy nhớ rằng chúng ta phải chuyển đổi nó thành một
bộ căng ngọn đuốc.
Vì vậy, đó chính xác là những gì chúng tôi sẽ làm ngay bây giờ.
Chúng tôi sẽ lấy thư viện ngọn đuốc của chúng tôi và sau đó lấy.
Lớp Tensor.
Chúng ta bắt đầu.
Điều này sẽ chuyển đổi tín hiệu mới của chúng tôi thành một bộ căng ngọn đuốc.
Sau đó, tốt hơn là đảm bảo rằng tất cả các phần tử của bộ căng đèn khò đều nổi.
Vì vậy, tôi sẽ thực hiện một chuyển đổi kiểu để chuyển đổi chúng thành float như thế này và cuối cùng cố gắng nắm bắt
được những gì chúng ta cần làm tiếp theo.
Tất nhiên, đó là để tạo thứ nguyên giả đó, để thêm thứ nguyên tương ứng với lô.
Và chúng tôi làm điều này, tất nhiên, với chức năng bóp mà chúng tôi phải nhập chỉ số của thứ nguyên giả này mà chúng
tôi muốn có cho lô, giá trị này bằng không.
Được rồi.
Và bây giờ chúng ta có trạng thái mới bao gồm ba tín hiệu của ba cảm biến cộng với định hướng
trừ định hướng.
Và tất nhiên, điều đó sẽ phụ thuộc vào tín hiệu mới mà chúng ta đang nhận được với chức năng cập nhật này ngay tại
dòng này.
Tín hiệu cuối cùng, chúng tôi nhận được ba tín hiệu cộng với định hướng trừ định hướng.
Và xin nhắc lại, ba tín hiệu này là mật độ mùi hương được phát hiện xung quanh các cảm biến.
Được rồi.
Vì vậy, chúng tôi vừa có trạng thái mới, điều đó có nghĩa là chúng tôi đã đạt đến trạng thái mới và bây giờ chúng tôi phải thực hiện bản cập
nhật tiếp theo.
Vậy theo bạn, chúng ta cần cập nhật những gì bây giờ?
Điều hợp lý để cập nhật ngay bây giờ sau khi đạt đến trạng thái mới này là gì?
Chà, những gì chúng ta cần cập nhật bây giờ là bộ nhớ.
Tại sao vậy?
Đó là bởi vì tại mỗi thời điểm t, một quá trình chuyển đổi bao gồm trạng thái hiện tại như t trạng thái tiếp theo là t
cộng với một, phần thưởng r t và hành động a t.
Và ngay bây giờ chúng ta đã có t, chúng ta đã có T và chúng ta đã có t và chúng ta chỉ có phần tử cuối
cùng của quá trình chuyển đổi là T cộng với một.
Vì vậy, bằng cách nhận trạng thái mới này là T cộng với một, chúng ta sẽ nhận được một quá trình chuyển đổi hoàn toàn mới của bộ nhớ.
Và do đó chúng tôi phải gắn quá trình chuyển đổi hoàn toàn mới này vào bộ nhớ vì đó chỉ đơn giản là quá trình chuyển đổi tiếp
theo của chúng tôi.
Vì vậy, đó là lý do tại sao chúng ta phải cập nhật bộ nhớ ngay bây giờ.
Và do đó, những gì tôi sẽ làm là lấy đối tượng bộ nhớ của tôi được tạo từ lớp bộ nhớ phát lại và
do đó tôi sẽ tự xử lý.
Bộ nhớ đó để chỉ đối tượng.
Nhưng vì tôi đang sử dụng self, nên tôi phải đưa self vào chức năng cập nhật.
Vì vậy, bây giờ bạn thực sự có thể thấy cái tôi là để làm gì.
Đó là bất cứ khi nào bạn sử dụng một biến mà bạn đã tạo và khởi tạo trong hàm init.
Vì vậy, bộ nhớ tự chấm và bây giờ chúng ta cần cập nhật nó.
Và theo bạn, chúng ta sẽ cập nhật điều đó như thế nào?
Tin tốt là chúng tôi đã tạo ra một chức năng để làm điều đó.
Đó là chức năng đẩy thêm một sự kiện hoặc một quá trình chuyển đổi vào bộ nhớ.
Vì vậy, đó chính xác là những gì chúng ta sẽ sử dụng bây giờ.
Chúng tôi sẽ sử dụng chức năng đẩy để gắn quá trình chuyển đổi mới mà chúng tôi vừa thực hiện vào bộ nhớ.
Và do đó, ở đây tôi không lấy bằng vì chúng ta sẽ sử dụng một phương pháp và do đó chúng
ta có thể trực tiếp sử dụng dot push.
Và đầu tiên, tôi sẽ thêm quá trình chuyển đổi, quá trình chuyển đổi mới này mà chúng ta vừa có được
và đó là trạng thái đầu tiên cuối cùng giống như trạng thái ít hơn.
Vì vậy, đó là S-T chính xác là cái này đã tồn tại.
Sau đó, yếu tố tiếp theo của quá trình chuyển đổi này tất nhiên là trạng thái mới mà chúng ta vừa đạt được.
Và do đó, vì nó không phải là một biến của đối tượng mà chúng ta đã tạo và khởi tạo trong hàm init
này, nên chúng ta không đặt tự ở đây.
Chúng tôi trực tiếp đặt trạng thái mới.
Sau đó, yếu tố tiếp theo của quá trình chuyển đổi là hành động và nói rằng chúng ta đã có hành động
cuối cùng, đây là hành động cuối cùng ở đây.
Vì vậy, tất nhiên nó bằng 0, nhưng tất nhiên sau đó nó sẽ được cập nhật với chức năng hành động chọn.
Nhưng đó là cái này.
Vì vậy, sau đó nó là hành động cuối cùng tự chấm.
Nhưng bây giờ hãy cẩn thận.
Các yếu tố mà chúng tôi đưa vào trong quá trình chuyển đổi này đều phải là những người múa đuốc.
Như bạn có thể thấy, đó là trường hợp của buổi hẹn hò cuối cùng.
Đó là một vũ công đuốc.
Bang mới cũng là một người múa đuốc.
Và vì vậy điều này phải giống nhau đối với hành động.
Và sau đó là phần thưởng, tất nhiên.
Nhưng bây giờ bạn sẽ nghĩ, làm thế nào nó có thể là một người nhảy đuốc, vì nó chỉ đơn giản là một
con số, bạn biết đấy, hành động hoặc không một hoặc hai, nhưng thực tế, đó không phải là vấn đề.
Chúng ta vẫn có thể chuyển đổi không một hoặc hai biến này thành một vũ công đuốc.
Đây sẽ chỉ là những gì chúng tôi gọi là một căng thẳng dài.
Long là một kiểu và đó là tensor sẽ chứa một số nguyên.
Bởi vì phần cuối cùng là một số nguyên, nó bằng không một hoặc hai.
Vì vậy, những gì chúng ta sẽ sử dụng bây giờ là ngọn đuốc thư viện của chúng ta.
Sau đó, chúng ta sẽ mất nhiều thời gian ở đây chính là lớp tensor dài sẽ tạo ra một đối tượng mới, chính nó sẽ
là lớp tensor dài.
Và bằng cách sử dụng hàm self last action làm đầu vào, nó sẽ tạo ra chủ thể dài hạn này, nhưng nó
sẽ vẫn chứa không một hoặc hai thành một đối tượng tensor dài.
Và đó chỉ là để phù hợp với quá trình chuyển đổi.
Điều đó chỉ nên chứa các cảm biến vì chúng tôi đang làm việc với PyTorch và chúng tôi đang làm việc với
mạng nơ-ron.
Vì vậy, chúng ta phải làm việc với các cảm biến để chúng ta có thể hoạt động lâu dài trên ngọn đuốc.
Và một chuyển đổi cuối cùng cần thực hiện, chúng ta phải chắc chắn rằng những gì bên trong câu trả lời dài này là một số nguyên và
để đảm bảo điều đó, ngay cả khi chúng ta đã biết rằng phần cuối cùng bằng không một hoặc
hai để đảm bảo rằng chúng ta sẽ thực hiện chuyển đổi kiểu int này một lần nữa, chúng tôi chuyển đổi hành động cuối cùng của chúng tôi thành một số nguyên.
Chúng ta bắt đầu.
Và sau đó chúng ta phải đặt hành động cuối cùng của số nguyên vào dấu ngoặc ngay tại đây để bây giờ chúng ta nhận được một hàng chục
dài của một phần tử sẽ là hành động cuối cùng này bằng không một hoặc hai chính nó.
Vì vậy, điểm mấu chốt là đó chỉ là cách bạn chuyển đổi một số đơn giản, không một hoặc hai thành một tensor bằng
cách chạm.
Được rồi.
Và cuối cùng, yếu tố cuối cùng của quá trình chuyển đổi, và tất nhiên đó là phần thưởng cuối cùng mà chúng tôi
nhận được.
Vì vậy, đó chính xác là biến phần thưởng cuối cùng mà chúng tôi đã tạo trong hàm init được khởi tạo bằng 0
nhưng sau đó tất nhiên được cập nhật ngay tại đây trong mã này khi chúng ta hiểu theo nghĩa nào đó là phần thưởng âm hoặc
nếu chúng ta càng đi xa mục tiêu, đó lại là một phần thưởng tiêu cực.
Nếu chúng ta tiến gần hơn đến mục tiêu, đó là một phần thưởng tích cực.
Và hình phạt tồi tệ nhất nếu chúng tôi đến quá gần một mép của bản đồ, à, đó là một phần thưởng tiêu cực
khủng khiếp, trừ đi một phần.
Và đó là tất cả.
Vì vậy, hãy thêm yếu tố cuối cùng này của quá trình chuyển đổi tự phần thưởng đó.
Vì vậy, tôi đang sao chép việc dán này ở đây và bây giờ chúng ta phải thực hiện một chuyển đổi khác, tất nhiên sẽ
giống hệt như chuyển đổi này.
Chỉ vì phần thưởng không phải là một số nguyên mà là một số thực, chúng tôi sẽ chỉ cần thực hiện một ngọn đuốc chuyển đổi
hàng chục.
Nhưng không có int, chúng ta sẽ giữ các dấu ngoặc ở đây bởi vì, bạn biết đấy, trước tiên
chúng ta phải đặt số vào một danh sách và sau đó danh sách này sẽ được đưa vào dưới dạng đầu vào trong lớp torch tensor.
Nhưng chúng tôi không phải thực hiện điều đó trong chuyển đổi vì phần thưởng cuối cùng là một số thực.
Vì vậy, những gì chúng ta sẽ làm đơn giản là thêm vào đây tensor chấm đuốc về phía tensor đó, sau đó là dấu ngoặc đơn,
dấu ngoặc.
Và chúng tôi sẽ đóng dấu ngoặc ở đây và chúng tôi đóng dấu ngoặc đơn.
Chúng ta bắt đầu.
Vì vậy, để tóm tắt với trạng thái mới mà chúng ta vừa đạt được và phần thưởng, chúng ta quan sát một sự kiện chuyển đổi mới
mà chúng ta thêm vào bộ nhớ.
Và quá trình chuyển đổi này chứa trạng thái cuối cùng sang trạng thái mới.
SD cộng một, hành động cuối cùng chơi 80 và phần thưởng cuối cùng.
Được rồi.
Và bây giờ chúng tôi đang làm tốt với bản cập nhật bộ nhớ của mình.
Vì vậy, hãy giải lao nhanh và chúng tôi sẽ quan tâm đến bản cập nhật tiếp theo trong hướng dẫn tiếp theo.
Cho đến lúc đó, hãy tận hưởng.
TÔI.