GAN – Mạng sáng tạo đối nghịch

Mạng sáng tạo đối nghịch (Generative Adversarial Network) với tên ngắn phổ biến GAN là một lớp các mô hình sinh mẫu sử dụng các kiến trúc học sâu.

Mô hình sinh là một bài toán trong học máy liên quan đến việc tự động phát hiện và học các mẫu phổ biến trong dữ liệu để từ đó, mô hình có thể sáng tạo ra các ví dụ mới phù hợp với dữ liệu gốc.

GAN là một cách tiếp cận thông minh để huấn luyện mô hình sinh bằng cách nhìn nhận bài toán sinh như một bài toán học có giám sát với hai thành phần: mô hình sinh được huấn luyện để sáng tạo ví dụ mới, và một mô hình đánh giá để phân biệt các ví dụ là một thực thể thật hay một thực thể giả (được sáng tạo ra). Hai mô hình được huấn luyện song song, đối nghịch, cho đến khi mô hình phân biệt bị đánh lừa trên hơn 50% số mẫu, tức là mô hình sinh thành công trong việc tạo ra dữ liêu giả chất lượng cao.

GAN đã làm thay đổi bức tranh công nghệ một cách nhanh chóng và đầy cảm hứng. Nó cho phép các mô hình tạo ra các ví dụ thực tế trong nhiều vấn đề khác nhau.

Học có giám sát và không giám sát

Bài toán học máy điển hình thường liên quan đến việc sử dụng một mô hình để đưa ra dự đoán. Do đó thành phần không thể thiếu là tập dữ liệu huấn luyện, bao gồm nhiều ví dụ, với biến đầu vào (X) và kết quả đầu ra (y). Hiểu đơn giản nhất, một mô hình được huấn luyện bằng cách dựa vào các biến đầu vào, dự đoán kết quả đầu ra và được sửa lại với mỗi lần đoán sai. Sau nhiều lần huấn luyện, khả năng dự đoán của mô hình dần khớp với dữ liệu huấn luyện. Phương pháp này gọi là học có giám sát.

Một biến thể khác là học không giám sát (còn được gọi là học mô tả), trong các bài toán này, dữ liệu chỉ có các biến đầu vào mà không có kết quả đầu ra. Mô hình được xây dựng bằng cách trích xuất và tổng hợp các mẫu tồn tại trong dữ liệu. Do đó không có mô hình chính xác vì mô hình trong các bài toán này không có chức năng dự đoán. Cùng với các bài toán khác như phân cụm, GAN thuộc lớp các bài toán học không giám sát.

GAN là gì?

Một cách tổng quát, GAN là lớp các mô hình sinh mà kiến trúc của nó sử dụng mạng nơ ron nhân tạo. Kiến trúc GAN đầu tiên được mô tả trong bài báo khóa học năm 2014 do nhóm của Ian Goodfellow giới thiệu có tên “Generative Adversarial Networks.”

Kiến trúc của GAN bao gồm hai thành phần nhỏ là một mô hình sinh để sinh ra ví dụ mới và một mô hình phân biệt để xác định các thực thể là giả (được tạo ra bởi mô hình sinh) hay là một thự thể thật.

  • Mô hình sinh. Mô hình sinh ra ví dụ mới từ dư liệu đầu vào.
  • Mô hình phân biệt. Mô hình xác định thật giả

Mô hình sinh nhận vào một véc tơ ngẫu nhiên có độ dài cố định và sinh ra một thực thể giả trong miền dữ liệu. Véc tơ này được sinh ra ngẫu nhiên từ phân bố Gauss và được sử dụng để khởi tạo quá trình sinh. Sau khi được huấn luyện, các điểm trong không gian véc tơ đa chiều này sẽ phù hợp với các điểm từ dữ liệu thật với phân bố dữ liệu tự nhiên.

Mô hình phân biệt nhận đầu vào là các ví dụ (thật và giả) và thực hiện bài toán phân lớp nhị phân để xác định xem các ví dụ này là thật hay giả. Các dữ liệu thật được lấy từ tập dữ liệu huấn luyện, các dữ liêu giả được lấy trực tiếp từ đầu ra của mô hình sinh. Mô hình phân biệt là một mô hình phân lớp dễ hiểu.

Dù là một bài toán học không giám sát nhưng với kiến trúc được thiết kế thông minh, GAN được huấn luyện như một bài toán học có giám sát. Mô hình sinh và mô hình phân biệt được huấn luyện đồng thời. Mô hình phân biệt sẽ dần thông minh hơn trong việc phát hiện các ví dụ thật / giả và do đó mô hình sinh cũng tinh tế hơn trong việc sáng tạo của mình.

Nói với ngôn ngữ của Lý thuyết trò chơi, trong bối cảnh này, hai mô hình thi đấu với nhau và đối nghịch trong một game có tổng bằng 0.

Biến thể quan trọng của GAN là các mô hình sinh tạo ra các ví dụ thỏa mãn các điều kiện cho trước. Các điều kiện này được đưa vào mạng nơ ron dưới dạng các đặc trưng. Các giá trị này có thể là giá trị biểu thị các lớp, giá trị số hay một ma trận (ví dụ bức ảnh). Đến lượt mình, mô hình phân biệt cũng nhận được những thông tin này và “ra yêu cầu” cho mô hình sinh thông qua những quyết định phân lớp của mình.

Cách tiếp cận này là khởi nguồn của hàng loạt các ứng dụng rất ấn tượng của GAN như thay đổi nội dung của ảnh, sáng tạo phong cách nghệ thuật, tô tranh hay chuyển một bức ảnh mùa hè thành mùa đông, ban ngày thành ban đêm, v..v..

Tại sao phải sử dụng GAN

Một trong những kỹ thuật quan trọng trong học sâu là Data augmentation. Kỹ thuật này giúp tăng hiệu quả mô hình cũng như góp phần giảm nhiễu và overfitting.

Mô hình sinh cung cấp một giải pháp thay thế cho data augmentation, đặc biệt hơn, ta có thể đặt hàng chính xác những dữ liệu tăng cường này với những điều kiện cho trước.

Bên cạnh đó, GAN có thể giúp mô hình hóa các dữ liệu trong chiều không gian lớn, giải quyết vấn đề thiếu dữ liệu và hỗ trợ con người trong các công việc sáng tạo.

Dưới đây là một số ứng dụng của GAN được Goodfellow chỉ ra:

  • Cải thiện chất lượng ảnh. GAN có thể sinh ra phiên bản có độ phân giải cao hơn ảnh gốc.
  • Sáng tạo nghệ thuật. GAN có khả năng vẽ tranh, viết kịch và sinh ảnh nghệ thuật.
  • Thay đổi nội dung ảnh. Thay đổi nội dung bức ảnh như thay đổi từ ban ngày thành ban đêm, mùa hè thành mùa xuân v..v..

Có lẽ lý do thuyết phục nhất lý giải cho sự phổ biến của GAN là thành công của các mô hình này. GAN có thể sinh ra những bức ảnh thật đến nỗi con người cũng khó có thể nhận ra chúng là ảnh giả.

Cảm ơn bạn đã đọc bài viết! Nếu bạn thấy bài viết thú vị, đừng ngại chia sẻ với mọi người và hãy thường xuyên truy cập hoặc đăng ký (phía dưới chân trang) để nhận được những thông tin mới nhất từ trituenhantao.io.