Trình tạo

Phần trình tạo của GAN học cách tạo dữ liệu giả bằng cách kết hợp phản hồi từ bộ phân biệt. Mô hình này học cách làm cho giá trị phân biệt phân loại đầu ra là thực.

Quá trình huấn luyện trình tạo đòi hỏi mức độ tích hợp chặt chẽ hơn giữa trình tạo và giá trị phân biệt so với quá trình huấn luyện giá trị phân biệt. Phần của GAN đào tạo trình tạo bao gồm:

  • dữ liệu đầu vào ngẫu nhiên
  • mạng trình tạo, biến đổi dữ liệu đầu vào ngẫu nhiên thành một thực thể dữ liệu
  • mạng phân biệt, phân loại dữ liệu được tạo
  • đầu ra của bộ phân biệt
  • tổn thất của trình tạo, phạt trình tạo vì không đánh lừa được bộ phân biệt

Sơ đồ về mạng đối kháng tạo sinh. Ở giữa sơ đồ là một hộp có nhãn "bộ phân biệt". Hai nhánh cấp dữ liệu vào hộp này từ bên trái.  Nhánh trên cùng bắt đầu ở phía trên bên trái của sơ đồ với một hộp có nhãn "hình ảnh thực tế". Một mũi tên dẫn từ hình trụ này đến một hộp có nhãn "Mẫu". Một mũi tên từ hộp có nhãn "Mẫu" sẽ chuyển vào hộp "Đặc tính phân biệt". Nhánh dưới cùng sẽ chuyển vào hộp "Discriminator" (Đặc tính phân biệt) bắt đầu bằng một hộp có nhãn "Random Input" (Dữ liệu đầu vào ngẫu nhiên). Một mũi tên dẫn từ hộp "Random Input" (Dữ liệu đầu vào ngẫu nhiên) đến một hộp có nhãn "Generator" (Trình tạo). Một mũi tên dẫn từ hộp "Trình tạo" đến hộp "Mẫu" thứ hai. Một mũi tên dẫn từ hộp "Mẫu" đến hộp "Đặc tính phân biệt". Ở bên phải hộp "Discriminator" (Bộ phân biệt), hai
          mũi tên dẫn đến hai hộp
          ở bên phải sơ đồ. Một mũi tên dẫn đến một hộp có nhãn "Mất giá trị phân biệt". Mũi tên còn lại dẫn đến một hộp có nhãn "Mất mát của máy phát". Một hộp màu vàng có gắn mũi tên chỉ sang trái và chữ "Backpropagation" (Truyền ngược) được vẽ xung quanh hộp "Random Input" (Dữ liệu đầu vào ngẫu nhiên), hộp "Generator" (Trình tạo), hộp "Sample" (Mẫu) ở dưới cùng, hộp "Discriminator" (Bộ phân biệt), hộp có gắn nhãn "Real" (Thực) và "Fake" (Giả) và hộp "Generator loss" (Mất mát của trình tạo) để cho biết rằng quá trình truyền ngược hoạt động trên phần hệ thống được bao bọc trong hộp màu vàng.

Hình 1: Truyền ngược trong quá trình huấn luyện trình tạo.

Dữ liệu đầu vào ngẫu nhiên

Mạng nơron cần một số dạng dữ liệu đầu vào. Thông thường, chúng ta nhập dữ liệu mà chúng ta muốn làm gì đó, chẳng hạn như một thực thể mà chúng ta muốn phân loại hoặc dự đoán. Nhưng chúng ta sử dụng gì làm dữ liệu đầu vào cho một mạng đầu ra các thực thể dữ liệu hoàn toàn mới?

Ở dạng cơ bản nhất, GAN lấy nhiễu ngẫu nhiên làm dữ liệu đầu vào. Sau đó, trình tạo sẽ chuyển đổi nhiễu này thành một đầu ra có ý nghĩa. Bằng cách đưa vào nhiễu, chúng ta có thể khiến GAN tạo ra nhiều loại dữ liệu, lấy mẫu từ nhiều vị trí trong quá trình phân phối mục tiêu.

Các thử nghiệm cho thấy rằng việc phân phối nhiễu không quan trọng lắm, vì vậy, chúng ta có thể chọn một giá trị dễ lấy mẫu, chẳng hạn như phân phối đồng nhất. Để thuận tiện, không gian lấy mẫu nhiễu thường có kích thước nhỏ hơn kích thước của không gian đầu ra.

Sử dụng bộ phân biệt để huấn luyện trình tạo

Để huấn luyện mạng nơron, chúng ta thay đổi trọng số của mạng để giảm lỗi hoặc tổn thất đầu ra. Tuy nhiên, trong GAN, trình tạo không được kết nối trực tiếp với tổn thất mà chúng ta đang cố gắng tác động. Trình tạo sẽ đưa vào mạng phân biệt và bộ phân biệt sẽ tạo ra đầu ra mà chúng ta đang cố gắng tác động. Mất mát của trình tạo sẽ phạt trình tạo vì tạo ra một mẫu mà mạng phân biệt được phân loại là giả mạo.

Bạn phải đưa phần mạng bổ sung này vào quá trình truyền ngược. Phương pháp truyền ngược điều chỉnh từng trọng số theo đúng hướng bằng cách tính toán mức tác động của trọng số đối với đầu ra – mức độ thay đổi của đầu ra nếu bạn thay đổi trọng số. Tuy nhiên, tác động của trọng số của trình tạo phụ thuộc vào tác động của trọng số của bộ phân biệt mà trọng số của trình tạo được đưa vào. Vì vậy, quá trình truyền ngược bắt đầu từ đầu ra và chảy ngược lại thông qua bộ phân biệt vào trình tạo.

Đồng thời, chúng ta không muốn hàm phân biệt thay đổi trong quá trình huấn luyện trình tạo. Việc cố gắng bắn trúng mục tiêu đang di chuyển sẽ khiến trình tạo gặp khó khăn hơn nữa.

Vì vậy, chúng ta huấn luyện trình tạo bằng quy trình sau:

  1. Lấy mẫu tiếng ồn ngẫu nhiên.
  2. Tạo đầu ra của trình tạo từ nhiễu ngẫu nhiên được lấy mẫu.
  3. Nhận giá trị phân biệt "Thực" hoặc "Giả" cho đầu ra của trình tạo.
  4. Tính toán tổn thất từ việc phân loại đối tượng phân biệt.
  5. Truyền ngược thông qua cả bộ phân biệt và trình tạo để lấy độ dốc.
  6. Sử dụng độ dốc để chỉ thay đổi trọng số của trình tạo.

Đây là một vòng lặp của quá trình huấn luyện trình tạo. Trong phần tiếp theo, chúng ta sẽ xem cách cân bằng việc huấn luyện cả trình tạo và trình phân biệt.