0965 636 913
Chat ngay

Chiến lược tiến hóa như một giải pháp thay thế có thể mở rộng cho việc học tăng cường

 

Chúng tôi đã phát hiện ra rằng các chiến lược tiến hóa (ES), một kỹ thuật tối ưu hóa đã được biết đến trong nhiều thập kỷ, có hiệu suất ngang bằng với các kỹ thuật học tăng cường (RL) tiêu chuẩn trên các chuẩn mực RL hiện đại (ví dụ: Atari/MuJoCo), đồng thời khắc phục được nhiều bất tiện của RL.

Đặc biệt, ES dễ triển khai hơn (không cần phải truyền ngược), dễ dàng mở rộng quy mô hơn trong bối cảnh phân tán, không bị ảnh hưởng trong bối cảnh có phần thưởng thưa thớt và có ít  siêu tham số hơn. Kết quả này thật đáng ngạc nhiên vì ES giống như việc leo đồi đơn giản trong không gian nhiều chiều chỉ dựa trên  sự khác biệt hữu hạn theo một vài hướng ngẫu nhiên ở mỗi bước.

Phát hiện của chúng tôi tiếp tục xu hướng hiện đại là đạt được kết quả mạnh mẽ với những ý tưởng đã có từ nhiều thập kỷ trước. Ví dụ, vào năm 2012,  bài báo “AlexNet” đã chỉ ra cách thiết kế, mở rộng quy mô và đào tạo mạng nơ-ron tích chập (CNN) để đạt được kết quả cực kỳ mạnh mẽ trong các nhiệm vụ nhận dạng hình ảnh, vào thời điểm mà hầu hết các nhà nghiên cứu đều cho rằng CNN không phải là một phương pháp tiếp cận đầy hứa hẹn đối với thị giác máy tính. Tương tự như vậy, vào năm 2013, bài báo Deep Q-Learning(mở trong cửa sổ mới) đã chỉ ra cách kết hợp Q-Learning với CNN để giải quyết thành công các trò chơi Atari, làm mới RL như một lĩnh vực nghiên cứu với các kết quả thử nghiệm thú vị (thay vì lý thuyết). Tương tự như vậy, công trình của chúng tôi chứng minh rằng ES đạt được hiệu suất mạnh mẽ trên các chuẩn mực RL, xóa tan niềm tin phổ biến rằng các phương pháp ES không thể áp dụng cho các vấn đề có chiều cao.

ES dễ triển khai và mở rộng. Chạy trên cụm máy tính gồm 80 máy và 1.440 lõi CPU, triển khai của chúng tôi có thể đào tạo người đi bộ dạng người 3D MuJoCo chỉ trong 10 phút (A3C trên 32 lõi mất khoảng 10 giờ). Sử dụng 720 lõi, chúng tôi cũng có thể đạt được hiệu suất tương đương với A3C trên Atari trong khi cắt giảm thời gian đào tạo từ 1 ngày xuống còn 1 giờ.

Trong phần sau, trước tiên chúng tôi sẽ mô tả ngắn gọn về phương pháp RL thông thường, so sánh với phương pháp ES của chúng tôi, thảo luận về sự đánh đổi giữa ES và RL, và cuối cùng nêu bật một số thí nghiệm của chúng tôi.

Học tăng cường

Hãy cùng xem qua cách RL hoạt động. Giả sử chúng ta được cung cấp một số môi trường (ví dụ như trò chơi) mà chúng ta muốn đào tạo một tác nhân. Để mô tả hành vi của tác nhân, chúng ta định nghĩa một hàm chính sách (bộ não của tác nhân), hàm này tính toán cách tác nhân nên hành động trong bất kỳ tình huống nào. Trong thực tế, chính sách thường là một mạng nơ-ron lấy trạng thái hiện tại của trò chơi làm đầu vào và tính toán xác suất thực hiện bất kỳ hành động nào được phép. Một hàm chính sách thông thường có thể có khoảng 1.000.000 tham số, vì vậy nhiệm vụ của chúng ta là tìm ra cài đặt chính xác của các tham số này sao cho chính sách hoạt động tốt (tức là thắng nhiều trò chơi).

Quá trình đào tạo cho chính sách hoạt động như sau. Bắt đầu từ một khởi tạo ngẫu nhiên, chúng tôi để tác nhân tương tác với môi trường trong một thời gian và thu thập các tập tương tác (ví dụ mỗi tập là một ván Pong). Do đó, chúng tôi có được bản ghi đầy đủ về những gì đã xảy ra: trình tự các trạng thái mà chúng tôi gặp phải, các hành động chúng tôi thực hiện trong mỗi trạng thái và phần thưởng là gì ở mỗi bước. Ví dụ, bên dưới là sơ đồ gồm ba tập, mỗi tập mất 10 bước thời gian trong một môi trường giả định. Mỗi hình chữ nhật là một trạng thái và các hình chữ nhật được tô màu xanh lá cây nếu phần thưởng là tích cực (ví dụ chúng tôi vừa đưa bóng qua đối thủ) và màu đỏ nếu phần thưởng là tiêu cực (ví dụ chúng tôi trượt bóng):

Sơ đồ này gợi ý một công thức để chúng ta có thể cải thiện chính sách; bất cứ điều gì chúng ta tình cờ làm dẫn đến các trạng thái xanh đều tốt, và bất cứ điều gì chúng ta tình cờ làm trong các trạng thái dẫn đến các vùng đỏ đều tệ. Sau đó, chúng ta có thể sử dụng backpropagation để tính toán một bản cập nhật nhỏ trên các tham số của mạng, điều này sẽ khiến các hành động xanh có nhiều khả năng xảy ra hơn trong các trạng thái đó trong tương lai và các hành động đỏ ít có khả năng xảy ra hơn trong các trạng thái đó trong tương lai. Chúng tôi hy vọng rằng chính sách được cập nhật sẽ hoạt động tốt hơn một chút do đó. Sau đó, chúng tôi lặp lại quy trình: thu thập một loạt tập khác, thực hiện một bản cập nhật khác, v.v.

Khám phá bằng cách đưa nhiễu vào các hành động . Các chính sách mà chúng ta thường sử dụng trong RL là ngẫu nhiên, ở chỗ chúng chỉ tính toán xác suất thực hiện bất kỳ hành động nào. Theo cách này, trong quá trình đào tạo, tác nhân có thể thấy mình ở một trạng thái cụ thể nhiều lần và tại những thời điểm khác nhau, nó sẽ thực hiện các hành động khác nhau do lấy mẫu. Điều này cung cấp tín hiệu cần thiết cho việc học; một số hành động đó sẽ dẫn đến kết quả tốt và được khuyến khích, và một số hành động khác sẽ không hiệu quả và bị nản lòng. Do đó, chúng ta nói rằng chúng ta đưa khám phá vào quá trình học bằng cách đưa nhiễu vào các hành động của tác nhân, chúng ta thực hiện điều này bằng cách lấy mẫu từ phân phối hành động tại mỗi bước thời gian. Điều này sẽ trái ngược với ES, mà chúng ta sẽ mô tả tiếp theo.

Chiến lược tiến hóa

Về “Tiến hóa” . Trước khi đi sâu vào phương pháp ES, điều quan trọng cần lưu ý là mặc dù có từ “tiến hóa”, ES không liên quan nhiều đến tiến hóa sinh học. Các phiên bản đầu tiên của các kỹ thuật này có thể lấy cảm hứng từ tiến hóa sinh học và phương pháp này, ở cấp độ trừu tượng, có thể được coi là lấy mẫu một quần thể cá thể và cho phép những cá thể thành công quyết định sự phân bố của các thế hệ tương lai. Tuy nhiên, các chi tiết toán học được trừu tượng hóa quá nhiều khỏi quá trình tiến hóa sinh học nên tốt nhất là coi ES chỉ đơn giản là một lớp các kỹ thuật tối ưu hóa ngẫu nhiên hộp đen.

Tối ưu hóa hộp đen . Trong ES, chúng ta hoàn toàn quên rằng có một tác nhân, một môi trường, rằng có các mạng nơ-ron liên quan hoặc rằng các tương tác diễn ra theo thời gian, v.v. Toàn bộ thiết lập là 1.000.000 số (tình cờ mô tả các tham số của mạng chính sách) đi vào, 1 số đi ra (tổng phần thưởng) và chúng ta muốn tìm thiết lập tốt nhất trong số 1.000.000 số. Về mặt toán học, chúng ta sẽ nói rằng chúng ta đang tối ưu hóa một hàm f(w) đối với vectơ đầu vào w (các tham số / trọng số của mạng), nhưng chúng ta không đưa ra bất kỳ giả định nào về cấu trúc của f, ngoại trừ việc chúng ta có thể đánh giá nó (do đó là "hộp đen").

Thuật toán ES . Theo trực giác, quá trình tối ưu hóa là một quá trình "đoán và kiểm tra", trong đó chúng ta bắt đầu với một số tham số ngẫu nhiên và sau đó lặp lại 1) điều chỉnh dự đoán một chút ngẫu nhiên và 2) di chuyển dự đoán của chúng ta một chút theo bất kỳ điều chỉnh nào hoạt động tốt hơn. Cụ thể, tại mỗi bước, chúng ta lấy một vectơ tham số w và tạo ra một quần thể gồm, chẳng hạn, 100 vectơ tham số w1 ... w100 hơi khác nhau bằng cách làm nhiễu w với nhiễu Gauss. Sau đó, chúng ta đánh giá từng ứng viên trong số 100 ứng viên một cách độc lập bằng cách chạy mạng chính sách tương ứng trong môi trường trong một thời gian và cộng tất cả các phần thưởng trong mỗi trường hợp. Sau đó, vectơ tham số được cập nhật trở thành tổng có trọng số của 100 vectơ, trong đó mỗi trọng số tỷ lệ thuận với tổng phần thưởng (tức là chúng ta muốn các ứng viên thành công hơn có trọng số cao hơn). Về mặt toán học, bạn sẽ nhận thấy rằng điều này cũng tương đương với việc ước tính độ dốc của phần thưởng dự kiến ​​trong không gian tham số bằng cách sử dụng các chênh lệch hữu hạn, ngoại trừ việc chúng ta chỉ thực hiện theo 100 hướng ngẫu nhiên. Một cách khác để thấy điều đó là chúng ta vẫn đang thực hiện RL (Policy Gradients hoặc  REINFORCE cụ thể), trong đó hành động của tác nhân là phát ra toàn bộ các vectơ tham số bằng cách sử dụng chính sách Gaussian.

Mẫu mã. Để làm cho thuật toán cốt lõi trở nên cụ thể và làm nổi bật tính đơn giản của nó, đây là một ví dụ ngắn về việc tối ưu hóa hàm bậc hai bằng ES (hoặc xem  phiên bản dài hơn này với nhiều bình luận hơn):

con trăn
 
12345678910111213141516
1
import numpy as np
2
solution = np.array([0.5, 0.1, -0.3])
3
def f(w): return -np.sum((w - solution)**2)
4
 
5
npop = 50 # population size
6
sigma = 0.1 # noise standard deviation
7
alpha = 0.001 # learning rate
8
w = np.random.randn(3) # initial guess
9
for i in range(300):
10
N = np.random.randn(npop, 3)
11
R = np.zeros(npop)
12
for j in range(npop):
13
w_try = w + sigma*N[j]
14
R[j] = f(w_try)
15
A = (R - np.mean(R)) / np.std(R)
16
w = w + alpha/(npop*sigma) * np.dot(N.T, A)
Ví dụ đơn giản: giảm thiểu một phương trình bậc hai xung quanh một số điểm nghiệm

Tiêm nhiễu vào các tham số . Lưu ý rằng mục tiêu giống hệt với mục tiêu mà RL tối ưu hóa: phần thưởng mong đợi. Tuy nhiên, RL tiêm nhiễu vào không gian hành động và sử dụng backpropagation để tính toán các bản cập nhật tham số, trong khi ES tiêm nhiễu trực tiếp vào không gian tham số. Một cách khác để mô tả điều này là RL là "phỏng đoán và kiểm tra" các hành động, trong khi ES là "phỏng đoán và kiểm tra" các tham số. Vì chúng ta đang tiêm nhiễu vào các tham số, nên có thể sử dụng các chính sách xác định (và chúng tôi làm vậy trong các thí nghiệm của mình). Cũng có thể thêm nhiễu vào cả hành động và tham số để có khả năng kết hợp cả hai phương pháp.

Sự đánh đổi giữa ES và RL

ES có nhiều ưu điểm hơn so với thuật toán RL (một số trong đó có tính kỹ thuật một chút):

+ Không cần truyền ngược . ES chỉ yêu cầu truyền tiếp chính sách và không yêu cầu truyền ngược (hoặc ước tính hàm giá trị), giúp mã ngắn hơn và nhanh hơn từ 2-3 lần trong thực tế. Trên các hệ thống bị hạn chế về bộ nhớ, cũng không cần phải lưu giữ bản ghi các tập để cập nhật sau. Cũng không cần phải lo lắng về việc bùng nổ gradient trong RNN. Cuối cùng, chúng ta có thể khám phá một lớp hàm lớn hơn nhiều của các chính sách, bao gồm các mạng không thể phân biệt được (như trong mạng nhị phân) hoặc các mạng bao gồm các mô-đun phức tạp (ví dụ: tìm đường hoặc nhiều lớp tối ưu hóa khác nhau).

+ Có khả năng song song hóa cao . ES chỉ yêu cầu các công nhân giao tiếp một vài số vô hướng với nhau, trong khi ở RL, cần phải đồng bộ hóa toàn bộ các vectơ tham số (có thể là hàng triệu số). Theo trực giác, điều này là do chúng ta kiểm soát các hạt giống ngẫu nhiên trên mỗi công nhân, do đó, mỗi công nhân có thể tái tạo cục bộ các nhiễu loạn của các công nhân khác. Do đó, tất cả những gì chúng ta cần để giao tiếp giữa các công nhân là phần thưởng của mỗi nhiễu loạn. Kết quả là, chúng tôi đã quan sát thấy tốc độ tăng tuyến tính trong các thí nghiệm của mình khi chúng tôi thêm vào hàng nghìn lõi CPU để tối ưu hóa.

+ Độ bền cao hơn . Một số siêu tham số khó thiết lập trong các triển khai RL được bỏ qua trong ES. Ví dụ, RL không phải là "không có thang đo", do đó, người ta có thể đạt được các kết quả học tập rất khác nhau (bao gồm cả lỗi hoàn toàn) với các thiết lập khác nhau của siêu tham số bỏ qua khung hình trong Atari. Như chúng tôi trình bày trong công trình của mình, ES hoạt động tốt như nhau với bất kỳ bỏ qua khung hình nào.

+ Khám phá có cấu trúc . Một số thuật toán RL (đặc biệt là các gradient chính sách) khởi tạo bằng các chính sách ngẫu nhiên, thường biểu hiện dưới dạng độ trễ ngẫu nhiên tại chỗ trong thời gian dài. Hiệu ứng này được giảm thiểu trong Q-Learning do các chính sách epsilon-greedy, trong đó hoạt động tối đa có thể khiến các tác nhân thực hiện một số hành động nhất quán trong một thời gian (ví dụ: giữ mũi tên trái). Điều này có nhiều khả năng thực hiện một điều gì đó trong trò chơi hơn là nếu tác nhân bị trễ tại chỗ, như trường hợp của các gradient chính sách. Tương tự như Q-learning, ES không gặp phải những vấn đề này vì chúng ta có thể sử dụng các chính sách xác định và đạt được sự khám phá nhất quán.

+ Phân công tín chỉ trong khoảng thời gian dài . Bằng cách nghiên cứu cả ước lượng độ dốc ES và RL về mặt toán học, chúng ta có thể thấy rằng ES là một lựa chọn hấp dẫn, đặc biệt là khi số bước thời gian trong một tập phim dài, khi các hành động có tác động lâu dài hoặc nếu không có ước lượng hàm giá trị tốt nào khả dụng.

Ngược lại, chúng tôi cũng thấy một số thách thức khi áp dụng ES vào thực tế. Một vấn đề cốt lõi là để ES hoạt động, việc thêm nhiễu vào các tham số phải dẫn đến các kết quả khác nhau để có được một số tín hiệu gradient. Như chúng tôi đã trình bày chi tiết trong bài báo của mình, chúng tôi thấy rằng việc sử dụng batchnorm ảo có thể giúp giảm bớt vấn đề này, nhưng cần phải tiếp tục nghiên cứu về việc tham số hóa hiệu quả các mạng nơ-ron để có các hành vi thay đổi theo nhiễu. Là một ví dụ về một khó khăn liên quan, chúng tôi thấy rằng trong Montezuma's Revenge, rất khó có thể lấy được chìa khóa ở cấp độ đầu tiên với một mạng ngẫu nhiên, trong khi điều này đôi khi có thể thực hiện được với các hành động ngẫu nhiên.

ES có tính cạnh tranh với RL

Chúng tôi đã so sánh hiệu suất của ES và RL trên hai chuẩn mực RL: nhiệm vụ điều khiển MuJoCo và chơi trò chơi Atari. Mỗi nhiệm vụ MuJoCo (xem ví dụ bên dưới) chứa một hình dạng khớp nối được mô phỏng vật lý, trong đó chính sách nhận vị trí của tất cả các khớp và phải đưa ra mô-men xoắn để áp dụng tại mỗi khớp để tiến về phía trước.

Chúng tôi thường so sánh hiệu suất của các thuật toán bằng cách xem xét hiệu quả học tập của chúng từ dữ liệu; như một hàm số của số lượng trạng thái chúng tôi đã thấy, phần thưởng trung bình của chúng tôi là gì? 

So sánh hiệu quả dữ liệu . Các so sánh trên cho thấy ES (màu cam) có thể đạt hiệu suất tương đương với TRPO (màu xanh lam), mặc dù không hoàn toàn bằng hoặc vượt trội hơn trong mọi trường hợp. Hơn nữa, khi quét theo chiều ngang, chúng ta có thể thấy ES kém hiệu quả hơn, nhưng không tệ hơn khoảng 10 lần (lưu ý trục x theo thang logarit).

So sánh đồng hồ treo tường . Thay vì xem xét số lượng trạng thái thô được nhìn thấy, người ta có thể lập luận rằng số liệu quan trọng nhất cần xem xét là thời gian đồng hồ treo tường: mất bao lâu (tính theo số giây) để giải quyết một vấn đề nhất định? Số lượng này cuối cùng quyết định tốc độ lặp lại có thể đạt được đối với một nhà nghiên cứu. Vì ES yêu cầu giao tiếp không đáng kể giữa các công nhân, chúng tôi đã có thể giải quyết một trong những nhiệm vụ khó nhất của MuJoCo (một người máy 3D) bằng cách sử dụng 1.440 CPU trên 80 máy chỉ trong 10 phút. Để so sánh, trong một thiết lập thông thường, 32 công nhân A3C trên một máy sẽ giải quyết nhiệm vụ này trong khoảng 10 giờ. Hiệu suất của RL cũng có thể được cải thiện với nhiều nỗ lực về thuật toán và kỹ thuật hơn, nhưng chúng tôi thấy rằng việc mở rộng quy mô A3C một cách ngây thơ trong thiết lập CPU đám mây tiêu chuẩn là một thách thức do yêu cầu băng thông giao tiếp cao.

Dưới đây là một số video về người đi bộ dạng người 3D được đào tạo bằng ES. Như chúng ta có thể thấy, kết quả có khá nhiều sự đa dạng, dựa trên mức tối thiểu cục bộ mà quá trình tối ưu hóa cuối cùng hội tụ vào.

Trên Atari, ES được đào tạo trên 720 lõi trong 1 giờ đạt được hiệu suất tương đương với A3C được đào tạo trên 32 lõi trong 1 ngày. Dưới đây là một số đoạn trích kết quả trên Pong, Seaquest và Beamrider.
 
Đặc biệt, hãy lưu ý rằng tàu ngầm trong Seaquest sẽ học cách nổi lên khi lượng oxy xuống thấp.

ES là một thuật toán từ tài liệu về tiến hóa thần kinh, có lịch sử lâu đời trong AI và một bài đánh giá tài liệu đầy đủ nằm ngoài phạm vi của bài đăng này. Tuy nhiên, chúng tôi khuyến khích độc giả quan tâm xem Wikipedia,  Học giả và bài đánh giá của Jürgen Schmidhuber (Phần 6.6). Công trình cung cấp thông tin chặt chẽ nhất cho cách tiếp cận của chúng tôi là  Chiến lược tiến hóa tự nhiên của Wierstra và cộng sự năm 2014. So với công trình này và nhiều công trình khác mà nó truyền cảm hứng, trọng tâm của chúng tôi đặc biệt là mở rộng các thuật toán này thành các thiết lập phân tán, quy mô lớn, tìm các thành phần giúp các thuật toán hoạt động tốt hơn với mạng nơ-ron sâu (ví dụ: chuẩn mực lô ảo(mở trong cửa sổ mới)), và đánh giá chúng trên các chuẩn mực RL hiện đại.

Cũng đáng lưu ý rằng các phương pháp tiếp cận liên quan đến tiến hóa thần kinh đã chứng kiến ​​sự hồi sinh gần đây trong tài liệu về học máy, ví dụ như với  HyperNetworks(mở trong cửa sổ mới),  “Sự tiến hóa quy mô lớn của các bộ phân loại hình ảnh” và  “Sự tích tụ bằng sự tiến hóa”.

Phần kết luận

Công trình của chúng tôi cho thấy các phương pháp tiến hóa thần kinh có thể cạnh tranh với các phương pháp học tăng cường trên các chuẩn mực môi trường tác nhân hiện đại, đồng thời mang lại những lợi ích đáng kể liên quan đến độ phức tạp của mã và khả năng mở rộng dễ dàng sang các thiết lập phân tán quy mô lớn. Chúng tôi cũng hy vọng rằng có thể thực hiện nhiều công việc thú vị hơn bằng cách xem xét lại các ý tưởng khác từ lĩnh vực này, chẳng hạn như các phương pháp mã hóa gián tiếp hoặc phát triển cấu trúc mạng ngoài các tham số.

Lưu ý về học có giám sát . Điều quan trọng cần lưu ý là các vấn đề học có giám sát (ví dụ như phân loại hình ảnh, nhận dạng giọng nói hoặc hầu hết các tác vụ khác trong ngành), trong đó người ta có thể tính toán độ dốc chính xác của hàm mất mát bằng cách truyền ngược, không bị ảnh hưởng trực tiếp bởi những phát hiện này. Ví dụ, trong các thí nghiệm sơ bộ của chúng tôi, chúng tôi thấy rằng việc sử dụng ES để ước tính độ dốc trên tác vụ nhận dạng chữ số MNIST có thể chậm hơn tới 1.000 lần so với việc sử dụng truyền ngược. Chỉ trong các thiết lập RL, khi người ta phải ước tính độ dốc của phần thưởng dự kiến ​​bằng cách lấy mẫu, thì ES mới trở nên cạnh tranh.

Phát hành mã . Cuối cùng, nếu bạn muốn tự mình thử chạy ES, chúng tôi khuyến khích bạn tìm hiểu đầy đủ chi tiết bằng cách đọc  bài báo của chúng tôi hoặc xem mã của chúng tôi trên kho. 

Xem thêm: mua tài khoản ChatGPT Plus chính hãng giá rẻ

Hot Deal

Họ tên (*)

Số điện thoại (*)

Email (*)

Dịch vụ

Đăng ký để nhận bản tin mới nhất !