Q Học hỏi: Tất cả những gì bạn cần biết về Học tập củng cố



Bài viết này cung cấp kiến ​​thức chi tiết và toàn diện về Q-Learning thông qua một cách tương tự tuyệt đẹp về Học tăng cường qua mã Python.

và là một vài miền nằm trong số những từ thông dụng hàng đầu trong ngành và vì một lý do chính đáng. AI sẽ tạo ra 2,3 triệu việc làm vào năm 2020 với mục tiêu chính là cho phép máy móc bắt chước hành vi của con người. Kỳ lạ phải không? Vì vậy, hôm nay chúng ta sẽ thảo luận về Q Learning, khối xây dựng của Reinforcement Learning theo thứ tự sau:

Học tăng cường là gì?

Hãy cùng nhìn lại cuộc sống hàng ngày của chúng ta. Chúng tôi thực hiện nhiều nhiệm vụ trong môi trường và một số nhiệm vụ đó mang lại cho chúng tôi phần thưởng trong khi một số thì không. Chúng tôi tiếp tục tìm kiếm các con đường khác nhau và cố gắng tìm ra con đường nào sẽ dẫn đến phần thưởng và dựa trên hành động của mình, chúng tôi cải thiện các chiến lược của mình để đạt được mục tiêu. Những người bạn của tôi là một trong những ví dụ đơn giản nhất của Học tăng cường.





cách sử dụng lớp máy quét

Các lĩnh vực quan tâm chính:

  • Môi trường
  • Hoạt động
  • Phần thưởng
  • Tiểu bang

học củng cố - q học



Học tăng cường là một nhánh của học máy cho phép các hệ thống học hỏi từ kết quả của các quyết định của chính chúng. Nó giải quyết một loại vấn đề cụ thể trong đó việc ra quyết định là tuần tự và mục tiêu là dài hạn.

Q-quá trình học tập

Chúng ta hãy hiểu Q đang học là gì với tuyên bố vấn đề của chúng tôi ở đây. Nó sẽ giúp chúng tôi xác định các thành phần chính của một giải pháp học tập củng cố, tức là tác nhân, môi trường, hành động, phần thưởng và trạng thái.

Tương tự nhà máy ô tô:



Chúng tôi đang ở một Nhà máy ô tô đầy robot. Những robot này giúp công nhân Nhà máy bằng cách chuyển tải các bộ phận cần thiết cần thiết để lắp ráp một chiếc ô tô. Các bộ phận khác nhau này được đặt tại các vị trí khác nhau trong nhà máy ở 9 ga. Các bộ phận bao gồm Khung xe, Bánh xe, Bảng điều khiển, Động cơ, v.v. Factory Master đã ưu tiên vị trí lắp đặt khung gầm là ưu tiên cao nhất. Hãy xem thiết lập ở đây:

Những trạng thái:

Vị trí tại đó rô bốt có mặt tại một phiên bản cụ thể được gọi là trạng thái của nó. Vì nó dễ dàng để mã hóa nó hơn là nhớ nó bằng tên. Hãy lập bản đồ vị trí với các con số.

Hành động:

Các hành động không là gì khác ngoài việc di chuyển của robot đến bất kỳ vị trí nào. Hãy xem xét, một robot đang ở vị trí L2 và các vị trí trực tiếp mà nó có thể di chuyển là L5, L1 và L3. Hãy hiểu điều này rõ hơn nếu chúng ta hình dung điều này:

Phần thưởng:

Phần thưởng sẽ được trao cho rô bốt khi đi thẳng từ trạng thái này sang trạng thái khác. Ví dụ, bạn có thể đến L5 trực tiếp từ L2 và ngược lại. Vì vậy, phần thưởng là 1 sẽ được cung cấp trong cả hai trường hợp. Hãy xem bảng phần thưởng:

Hãy nhớ rằng khi Nhà máy sản xuất Ưu tiên vị trí khung gầm. Đó là L7, vì vậy chúng tôi sẽ đưa thông tin này vào bảng phần thưởng của mình. Vì vậy, chúng tôi sẽ chỉ định một số rất lớn (trong trường hợp của chúng tôi là 999) ở vị trí (L7, L7).

Phương trình Bellman

Bây giờ, giả sử một rô bốt cần đi từ điểm A đến B. Nó sẽ chọn con đường sẽ mang lại phần thưởng dương. Vì vậy, giả sử chúng tôi cung cấp một phần thưởng về mặt dấu ấn để nó tiếp tục.

Nhưng điều gì sẽ xảy ra nếu robot bắt đầu từ một nơi nào đó ở giữa nơi nó có thể nhìn thấy hai hoặc nhiều đường đi. Do đó, rô bốt không thể đưa ra quyết định và điều này chủ yếu xảy ra bởi vì nó không có ký ức . Đây là nơi Phương trình Bellman xuất hiện trong hình.

V (s) = max (R (s, a) + & # 120632V (s ’))

Ở đâu:

  • s = một trạng thái cụ thể
  • a = hành động
  • s '= trạng thái mà robot đi từ s
  • & # 120632 = hệ số chiết khấu
  • R (s, a) = một hàm phần thưởng nhận (các) trạng thái và hành động (a) và xuất ra giá trị phần thưởng
  • V (s) = giá trị của trạng thái cụ thể

Bây giờ khối bên dưới đích sẽ có phần thưởng là 1, đó là phần thưởng cao nhất, Nhưng khối còn lại thì sao? Chà, đây là lúc hệ số chiết khấu đi vào. Hãy giả sử hệ số chiết khấu là 0,9 và điền vào từng khối một.

Quy trình quyết định Markov

Hãy tưởng tượng một con robot đang ở trên khối màu cam và cần đến đích. Nhưng ngay cả khi có một chút rối loạn chức năng, robot sẽ bối rối không biết nên đi con đường nào hơn là đi lên.

Vì vậy, chúng ta cần sửa đổi quy trình ra quyết định. Nó phải Một phần ngẫu nhiênMột phần dưới sự kiểm soát của robot . Một phần là ngẫu nhiên vì chúng tôi không biết khi nào rô bốt sẽ rối loạn chức năng và Một phần nằm trong tầm kiểm soát vì đó vẫn là quyết định của rô bốt. Và điều này tạo thành cơ sở cho Quy trình Quyết định Markov.

Quy trình quyết định Markov (MDP) là một quy trình kiểm soát ngẫu nhiên theo thời gian rời rạc. Nó cung cấp một khung toán học để mô hình hóa việc ra quyết định trong các tình huống mà kết quả một phần là ngẫu nhiên và một phần nằm dưới sự kiểm soát của người ra quyết định.

Vì vậy, chúng tôi sẽ sử dụng phương trình Bellman ban đầu của chúng tôi và thực hiện các thay đổi trong nó. Điều chúng tôi không biết là trạng thái tiếp theo. S'. Những gì chúng ta biết là tất cả các khả năng của một lượt và hãy thay đổi Phương trình.

chuyển đổi nhị phân sang java số nguyên

V (s) = max (R (s, a) + & # 120632 V (s ’))

V (s) = max (R (s, a) + & # 120632 & SigmaS'P (s, a, s ’) V (s '))

P (s, a, s ’): Xác suất chuyển từ trạng thái S đến S' với hành động đến

& SigmaS'P (s, a, s ’) V (s ’): Kỳ vọng ngẫu nhiên của Robot

V (s) = max (R (s, a) + & # 120632 ((0,8V (phònglên)) + (0,1V (phòngxuống) +….))

Bây giờ, hãy chuyển sang Q Learning. Q-Learning đưa ra ý tưởng về việc đánh giá chất lượng của một hành động được thực hiện để chuyển sang trạng thái thay vì xác định giá trị có thể có của trạng thái mà nó đang được chuyển đến.

Đây là những gì chúng ta nhận được nếu chúng ta kết hợp ý tưởng đánh giá chất lượng của các hành động để chuyển đến một trạng thái nhất định. Từ Phương trình Bellman được cập nhật nếu chúng ta loại bỏ chúng tối đa thành phần, chúng tôi chỉ giả định một dấu chân cho hành động có thể xảy ra, không gì khác ngoài Chất lượng của hành động.

Q (s, a) = (R (s, a) + & # 120632 & SigmaS'P (s, a, s ’) V (s '))

stack và heap trong java

Trong phương trình Định lượng Chất lượng của hành động này, chúng ta có thể giả định rằng V (s) là giá trị lớn nhất có thể có của Q (s, a). Vì vậy, hãy thay thế v (s ’) bằng một hàm của Q ().

Q (s, a) = (R (s, a) + & # 120632 & SigmaS'P (s, a, s ’) tối đa Q (s ’, a’))

Chúng ta chỉ còn một bước nữa là đến với Phương trình cuối cùng của Q Learning. Chúng tôi sẽ giới thiệu một Sự khác biệt theo thời gian để tính toán các giá trị Q liên quan đến những thay đổi của môi trường theo thời gian. Nhưng làm thế nào để chúng ta quan sát sự thay đổi trong Q?

TD (s, a) = (R (s, a) + & # 120632 & SigmaS'P (s, a, s ’) tối đa Q (s ’, a’)) - Q (s, a)

Chúng tôi tính lại Q (s, a) mới với cùng một công thức và trừ Q (s, a) đã biết trước đó khỏi nó. Vì vậy, phương trình trên trở thành:

Qt(s, a) = Qt-1(s, a) + α TDt(s, a)

Qt(s, a) = Giá trị Q hiện tại

Qt-1(s, a) = Giá trị Q trước đó

Qt(s, a) = Qt-1(s, a) + α (R (s, a) + & # 120632 max Q (s ’, a’)-Qt-1(s, a))

Q Learning Demo: NumPy

Tôi sẽ sử dụng NumPy để chứng minh cách hoạt động của Q Learning.

Bước 1: Nhập, Tham số, Trạng thái, Hành động và Phần thưởng

nhập numpy dưới dạng np gamma = 0,75 # Hệ số chiết khấu alpha = 0,9 # Tỷ lệ học tập location_to_state = {'L1': 0, 'L2': 1, 'L3': 2, 'L4': 3, 'L5': 4, ' L6 ': 5,' L7 ': 6,' L8 ': 7,' L9 ': 8} hành động = [0,1,2,3,4,5,6,7,8] phần thưởng = np.array ( [[0,1,0,0,0,0,0,0,0], [1,0,1,0,0,0,0,0,0], [0,1,0,0, 0,1,0,0,0], [0,0,0,0,0,0,1,0,0], [0,1,0,0,0,0,0,1,0] , [0,0,1,0,0,0,0,0,0], [0,0,0,1,0,0,0,1,0], [0,0,0,0, 1,0,1,0,1], [0,0,0,0,0,0,0,1,0]])

Bước 2: Bản đồ Chỉ số đến các vị trí

state_to_location = dict ((state, location) cho vị trí, trạng thái trong location_to_state.items ())

Bước 3: Có được lộ trình tối ưu bằng Quy trình học tập Q

def get_optimal_route (start_location, end_location): Rew_new = np.copy (phần thưởng) end_state = location_to_state [end_location] Rew_new [end_state, ending_state] = 999 Q = np.array (np.zeros ([9,9])) # Q- Quy trình học tập cho tôi trong phạm vi (1000): # Chọn trạng thái ngẫu nhiên current_state = np.random.randint (0,9) # Python loại trừ giới hạn trên playable_actions = [] # Lặp lại ma trận phần thưởng mới cho j trong phạm vi ( 9): if Rew_new [current_state, j]> 0: playable_actions.append (j) # Chọn một hành động ngẫu nhiên sẽ dẫn chúng ta đến trạng thái tiếp theo next_state = np.random.choice (playable_actions) # Computing Temporal Difference TD = Rew_new [current_state , next_state] + gamma * Q [next_state, np.argmax (Q [next_state,])] - Q [current_state, next_state] # Cập nhật Q-Value bằng phương trình Bellman Q [current_state, next_state] + = alpha * TD # Khởi tạo tuyến đường tối ưu với vị trí xuất phát tuyến đường = [start_location] # Khởi tạo tuyến đường next_location với vị trí bắt đầu next_location = star t_location # Chúng tôi không biết về số lần lặp chính xác cần thiết để đến vị trí cuối cùng, do đó, vòng lặp while sẽ là lựa chọn tốt để lặp lại while (next_location! = end_location): # Tìm nạp trạng thái bắt đầu started_state = location_to_state [start_location] # Tìm nạp giá trị Q cao nhất liên quan đến trạng thái bắt đầu next_state = np.argmax (Q [started_state,]) # Chúng tôi nhận được chỉ mục của trạng thái tiếp theo. Nhưng chúng ta cần chữ cái tương ứng. next_location = state_to_location [next_state] route.append (next_location) # Cập nhật vị trí bắt đầu cho lần lặp tiếp theo start_location = next_location lộ trình quay lại

Bước 4: In tuyến đường

print (get_optimal_route ('L1', 'L9'))

Đầu ra:

Với điều này, chúng ta sẽ kết thúc Q-Learning. Tôi hy vọng bạn đã biết hoạt động của Q Learning cùng với các phụ thuộc khác nhau ở đó như Chênh lệch thời gian, Phương trình Bellman và hơn thế nữa.

Edureka's giúp bạn thành thạo các kỹ thuật như Học có giám sát, Học không giám sát và Xử lý ngôn ngữ tự nhiên. Nó bao gồm đào tạo về những tiến bộ và phương pháp tiếp cận kỹ thuật mới nhất trong Trí tuệ nhân tạo & Máy học như Học sâu, Mô hình đồ họa và Học tăng cường.