Giới thiệu về Generative Adversarial Networks (GANs)


“… (GANs) and the variations that are now being proposed is the most interesting idea 
in the last 10 years in ML…” 

Tạm dịch: “… GAN cùng các biến thể của nó được đề xuất là ý tưởng thú vị nhất 
về Machine Learning trong vòng mười năm qua...” 

- Yann LeCun, giám đốc Facebook AI Research. 

Nếu bạn chưa từng nghe về Generative Adversarial Networks, thì bạn đã bỏ qua chủ đề (có lẽ vẫn còn là) hot nhất của Deep Learning trong những năm gần đây. Nhưng yên tâm vì hôm nay bạn sẽ được lướt qua vài điều về nó.

Đôi nét giới thiệu

Neural Network đã tạo ra một bước tiến vượt bậc, cung cấp khả năng nhận diện hình ảnh và âm thanh ở một cấp độ có thể so sánh với con người. Cùng với đó là việc hiểu được ngôn ngữ tự nhiên với độ chính xác khá tốt.

Các model sử dụng Neural Network trước đây có thể ngay lập tức nhận dạng một chú mèo trong một bức ảnh, thông qua việc học và phân tích hàng trăm, thậm chí hàng ngàn, chục ngàn bức ảnh về loài mèo. Nhưng các bức ảnh đó không thể sử dụng làm tập dữ liệu huấn luyện nếu không có sự dán nhãn, phân chia từng bức ảnh một cách tỉ mỉ của con người. Điều này rất tốn thời gian và công sức.

Và GAN được sinh ra với kỳ vọng tạo ra được những hệ thống có độ chính xác vao mà cần ít hoạt động của con người trong khâu huấn luyện.

Generative Adversarial Network - tạm dịch Mạng Chống đối Tạo sinh - hình thành trên ý tưởng về sự cạnh tranh của hai mạng neural network:
  • Discriminative network (mạng phân biệt): có nhiệm vụ cố gắng phân biệt giữa data thật và data giả mạo.
  • Generative network (mạng sinh): sinh ra data giả, và mục tiêu là làm sao cho sinh ra được các data giống với thật nhất, làm Discriminator không thể phân biệt nổi. Các sample được sinh dựa trên các latent code (mã ngầm) z.

Concept này cũng rất quen thuộc trong thực tế: Công nghệ làm tranh giả.

Trái hay phải? À có khi cả hai cùng là đồ giả cũng nên

Các hoạ sĩ hầu như không chú tâm vào việc chống sao chép trong các tác phẩm của mình (tất nhiên, 100% nghệ thuật mà), và việc làm - chống tranh giả là cuộc chơi giữa các nhà thẩm định và hoạ sĩ sao chép. Nhà thẩm định nỗ lực nâng cao khả năng phát hiện đồ dỏm trong khi kỹ thuật sao chép ngày một tinh vi. Tương tự, Discriminator và Generator liên tục cải thiện khả năng trong quá trình huấn luyện, và chỉ kết thúc khi mà Discriminator không thể phân biệt được sample là đến từ data (thật) hay đến từ generator (giả).

GAN thực sự hoạt động ra sao?



Generator lấy một random input và cố gắng sinh ra được sample của data. Như mô tả ở hình trên, generator G(z) lấy input z từ pz(z), với z là sample thuộc phân phối xác xuất p(z), được sinh ngẫu nhiên từ latent space, sau đó gán thêm nhiễu (noise). Sample sinh ra từ G(z) được nạp vào Discriminator network D(x). Công việc của Discriminator network là lấy input từ tập train (real sample) và sample được sinh ra từ G (generated sample) và xác định xem sample nào mới là thật. Real sample x được lấy từ phân phối xác suất pdata(x).
D(x) xử lý vấn đề binary classification bằng cách sử dụng hàm sigmoid, trả về kết quả khoảng từ 0 đến 1, với xác suất đầu ra càng cao thì khả năng sample đó là thật (sample lấy từ tập data) càng lớn, và ngược lại.
D được huấn luyện để tối đa xác suất gán đúng nhãn cho sample, đồng thời G lại được huấn luyện để tối thiểu khả năng phát hiện của D, tương đương tối thiểu log(1 - D(G(z)).
Nói cách khác, việc huấn luyện D và G tương ứng với trò chơi minimax giữa hai người cho hàm số:

$\Large \min\limits_{G}\max\limits_{D}V(D,G) = E_{x \sim p_{data}(x)}[\log D(x)] + E_{z \sim p_{z}(z)}[\log(1 - D(G(z)))]$.

Trong hàm số $V(D,G)$:

$E_{x \sim p_{data}(x)}[\log D(x)]$ là giá trị kỳ vọng khả năng sample từ phân phối training được D đánh giá dữ liệu thật. Giá trị này càng cao thì khả năng đánh giá dữ liệu training của D càng chính xác.
$E_{z \sim p_z(z)}[\log(1-D(G(x)))]$là giá trị kỳ vọng khả năng sample từ G (được G sinh ra từ phân phối pz) được D đánh giá là dữ liệu giả. Giá trị càng cao khả năng đánh giá dữ liệu sinh của D càng chính xác.

Tổng thể, D cố gắng maximize $V(D,G)$ trong khi G thì ngược lại. Quá trình huấn luyện sẽ hội tụ khi $\Large p_g = p_{data} \Leftrightarrow D(x) = \frac{1}{2} \Leftrightarrow $ D không thể phân biệt được 1 sample là thật hay giả (xác suất đều là 0.5).

Quá trình huấn luyện

Nhìn chung, quá trình training của GAN được chia thành phần, thực hiện theo thứ tự:

1. Huấn luyện Discriminator network, cố định Generator network (cố định ở đây nghĩa là chỉ feed-forward, không backpropagation)

D được update Stochastic gradient sau mỗi bước train bằng cách công thêm giá trị

$\nabla_{\theta_{d}}\dfrac{1}{m}\sum_{i=1}^{m}\left[\log(D(x^{(i)}) + \log(1-D(G(z)))\right]$


2. Huấn luyện Generator network, cố định Discriminator network


G được update Stochastic gradient bằng cách trừ đi giá trị:

$\nabla_{\theta_{g}}\dfrac{1}{m}\sum_{i=1}^{m}\log(1-D(G(z)))$


Ứng dụng của GAN và các biến thể

GAN cùng với các biến thể được phát triển của có đem lại rất nhiều ứng dụng hữu ích

Dịch văn bản thành hình ảnh

Một nghiên cứu đã cho thấy tính khả thi thông qua sử dụng tính mô tả của ngôn ngữ tự nhiên có thể sinh ra những hình ảnh tương ứng. Đây là một minh hoạ  cho performance của generative network dùng để bắt chước các sample trong thực tế.
 Vấn đề khó khăn chính của việc sinh hình ảnh là phân phối ảnh thực tế mang tính multimodel, nghĩa là với mỗi một mô tả có thể có rất nhiều sample minh hoạ lại một cách chính xác. Và GAN đã giải quyết được vấn đề này một cách dễ dàng.


Chấm màu xanh lam là input, màu xanh lá là các hình ảnh minh hoạ chính xác. Mũi tên màu đen là cách chọn ra output tương ứng. Mũi tên đỏ chỉ ra sai số của dự đoán, điều này dẫn đến sau một thời gian huấn luyện, chấm xanh lam sẽ được map đến giá trị trung bình của các chấm xanh lá, tạo ra các hình ảnh mờ (blurry), pha trộn.

Generative adversarial nets không trực tiếp chọn ra một cặp input - output. Nó học cách các cặp input - output được kết nối với nhau như thế nào.

Dưới đây là một vài ví dụ:
Generative Adversarial Text to Image Synthesis

Tăng độ  phân giải của ảnh: 

Tạo ra những bức ảnh sắc nét có độ phân ảnh cao từ những bức ảnh tương ứng có độ phân giải thấp từ Super resolution GAN - SRGAN.

Dịch ảnh thành ảnh

Sinh ra ảnh từ một ảnh khác. Ví dụ như dưới đấy: từ hình ảnh khung của toà nhà, sinh ra hỉnh ảnh giống thực tế của ngôi nhà với cấu trúc tương ứng. Sử dụng Conditional GANs.





Nghiên cứu chế tạo thuốc

Trong khi GAN được ứng dụng rất nhiều với hình ảnh và video. Các nghiên cứu của Insilico Medicine lại đề xuất hướng tiếp cận nhằm tạo ra các loại dược phẩm thông minh nhận tạo.
Mục tiêu huấn luyện Generator là tạo ra các loại thuốc có tiềm năng chữa loại bệnh nhất định, với độ chính xác càng lớn càng tốt, tập huấn luyện được sử dụng từ các loại thuốc hiện có ngày nay.

Sau khi đào tạo, có thể tạo ra một loại thuốc cho một căn bệnh không thể chữa được trước đó bằng cách sử dụng Generator và Discriminator để xác định xem liệu thuốc đã sinh ra có thực sự chữa khỏi bệnh hay không.

Comments

Popular posts from this blog

YOLO: You Only Look Once

Intersection over Union (IoU) cho object detection