GAN ngoài thế hệ: 7 trường hợp sử dụng thay thế

https://sigmoidal.io/beginners-review-of-gan-architectures/

Chào mọi người!
Giống như nhiều người đang theo đuổi những tiến bộ trong AI, tôi không thể bỏ qua những tiến bộ gần đây trong mô hình hóa thế hệ, đặc biệt là thành công lớn của các mạng đối nghịch thế hệ (GANs) trong việc tạo hình ảnh. Nhìn vào các mẫu này: chúng hầu như không thể phân biệt được với ảnh thật!

Các mẫu từ BigGAN: https://openreview.net/pdf?id=B1xsqj09Fm

Sự tiến bộ của thế hệ khuôn mặt từ 2014 đến 2018 cũng rất đáng chú ý:

Tôi rất hào hứng với những kết quả này, nhưng sự hoài nghi bên trong của tôi luôn nghi ngờ liệu chúng có thực sự hữu ích và được áp dụng rộng rãi hay không. Tôi đã mở câu hỏi này trong ghi chú trên Facebook của mình:

Về cơ bản, tôi đã phàn nàn rằng với tất cả sức mạnh của các mô hình thế hệ, chúng tôi không thực sự sử dụng chúng cho một cái gì đó thiết thực hơn so với thế hệ độ phân giải cao hoặc thế hệ bánh mì kẹp thịt. Tất nhiên, có những doanh nghiệp, có thể dựa trực tiếp vào việc tạo hình ảnh hoặc chuyển kiểu (như nhân vật hoặc thế hệ cấp độ trong ngành công nghiệp trò chơi, chuyển phong cách từ ảnh thật sang ảnh đại diện anime), nhưng tôi đã tìm kiếm nhiều lĩnh vực hơn trong đó GAN và các thế hệ khác mô hình có thể được áp dụng. Tôi cũng muốn nhớ rằng, với các mô hình thế hệ, chúng ta có thể tạo ra không chỉ hình ảnh, mà cả văn bản, âm thanh, giọng nói, âm nhạc, dữ liệu có cấu trúc như cấp độ trò chơi hoặc phân tử thuốc và có một bài đăng blog tuyệt vời với các ứng dụng giống thế hệ khác, nhưng ở đây chúng tôi sẽ hạn chế chúng tôi với các ví dụ trong đó tổng hợp không phải là mục tiêu chính.

Tạo cấp trò chơi với RNN

Trong bài viết này tôi trình bày 7 trường hợp sử dụng thay thế. Với một số người trong số họ tôi đã làm việc cá nhân và có thể xác nhận tính hữu dụng của họ, một số khác đang được nghiên cứu, nhưng điều đó không có nghĩa là họ không đáng để thử. Tất cả những ví dụ về việc sử dụng các mô hình thế hệ không nhất thiết phải tạo ra có thể được áp dụng ở các khu vực khác nhau và cho các dữ liệu khác nhau, vì mục tiêu chính của chúng tôi sẽ không tạo ra một cái gì đó thực tế, nhưng khai thác kiến ​​thức bên trong của mạng lưới thần kinh cho các nhiệm vụ mới.

1. Tăng dữ liệu

Có lẽ ứng dụng rõ ràng nhất có thể là đào tạo một mô hình để tạo các mẫu mới từ dữ liệu của chúng tôi để tăng dữ liệu của chúng tôi. Làm thế nào để chúng ta kiểm tra nếu sự tăng cường này thực sự giúp một cái gì đó? Chà, có hai chiến lược chính: chúng ta có thể huấn luyện mô hình của mình trên dữ liệu giả mạo và kiểm tra xem nó hoạt động tốt như thế nào trên các mẫu thực. Và ngược lại: chúng tôi đào tạo mô hình của chúng tôi về dữ liệu thực để thực hiện một số nhiệm vụ phân loại và chỉ sau khi kiểm tra xem nó hoạt động tốt như thế nào trên dữ liệu được tạo (người hâm mộ GAN có thể nhận ra điểm khởi đầu ở đây). Nếu nó hoạt động tốt trong cả hai trường hợp - bạn có thể thoải mái thêm các mẫu từ mô hình tổng quát vào dữ liệu thực của mình và đào tạo lại nó - bạn sẽ mong đợi đạt được hiệu suất. Để làm cho phương pháp này thậm chí còn mạnh mẽ và linh hoạt hơn, hãy kiểm tra ứng dụng # 6.

NVIDIA đã cho thấy ví dụ tuyệt vời về cách tiếp cận này trong thực tế: họ đã sử dụng GAN để tăng dữ liệu hình ảnh CT não y tế với các bệnh khác nhau và cho thấy hiệu suất phân loại chỉ sử dụng tăng dữ liệu cổ điển mang lại độ nhạy 78,6% và độ đặc hiệu 88,4%. Bằng cách thêm dữ liệu tổng hợp, kết quả đã tăng độ nhạy lên 85,7% và độ đặc hiệu 92,4%.

https://arxiv.org/pdf/1804.01229.pdf

2. Giữ gìn sự riêng tư

Dữ liệu của rất nhiều công ty có thể là bí mật (như dữ liệu tài chính kiếm tiền), bí mật hoặc nhạy cảm (dữ liệu y tế có chứa chẩn đoán bệnh nhân). Nhưng đôi khi chúng ta cần chia sẻ nó với các bên thứ ba như chuyên gia tư vấn hoặc nhà nghiên cứu. Nếu chúng ta chỉ muốn chia sẻ ý tưởng chung về dữ liệu của chúng tôi bao gồm các mẫu, chi tiết và hình dạng quan trọng nhất của các đối tượng, chúng ta có thể sử dụng các mô hình thế hệ trực tiếp như trong đoạn trước để lấy ví dụ về dữ liệu của mình để chia sẻ với người khác. Bằng cách này, chúng tôi đã giành được chia sẻ bất kỳ dữ liệu bí mật chính xác nào, chỉ là thứ gì đó trông giống hệt nó.

Trường hợp khó khăn hơn là khi chúng tôi muốn chia sẻ dữ liệu bí mật. Tất nhiên, chúng tôi có các sơ đồ mã hóa khác nhau, như mã hóa đồng hình, nhưng chúng có những nhược điểm như ẩn 1MB thông tin trong mã 10GB. Năm 2016, Google đã mở một hướng nghiên cứu mới về việc sử dụng khung cạnh tranh GAN cho vấn đề mã hóa, trong đó hai mạng phải cạnh tranh trong việc tạo mã và bẻ khóa nó:

https://towardsdatascience.com/adversarial-neural-cryptography-can-solve-the-biggest-friction-point-in-modern-ai-cc13b337f969

Nhưng điểm tốt nhất không phải là hiệu quả của mã thu được hoặc từ thông dụng AI AI ở khu vực khác. Chúng ta nên nhớ rằng các biểu diễn, thu được từ các mạng thần kinh rất thường vẫn chứa thông tin hữu ích nhất về dữ liệu đầu vào (một số trong số chúng thậm chí được đào tạo trực tiếp để có thông tin đó như bộ tự động) và từ dữ liệu nén này, chúng ta vẫn có thể phân loại / hồi quy / phân cụm hoặc bất cứ điều gì chúng ta muốn. Nếu chúng ta thay thế phần mềm nén nén bằng một phần mềm được mã hóa, thì ý tưởng này rất rõ ràng: đây là cách tuyệt vời để chia sẻ dữ liệu với bên thứ ba mà không hiển thị bất cứ điều gì về tập dữ liệu. Nó mạnh hơn nhiều so với ẩn danh hoặc thậm chí tạo mẫu giả và có thể là một vấn đề lớn tiếp theo (tất nhiên là sử dụng blockchain, giống như Numerai đã làm)

3. Phát hiện bất thường

Các mô hình thế hệ chính như bộ mã hóa tự động biến đổi (VAE) hoặc GAN bao gồm hai phần. VAE có bộ mã hóa và giải mã, trong đó cái đầu tiên về cơ bản mô hình phân phối và thứ hai tái tạo lại từ nó. GAN bao gồm trình tạo và phân biệt đối xử, trong đó mô hình đầu tiên phân phối và phán đoán thứ hai nếu nó gần với dữ liệu huấn luyện. Như chúng ta có thể thấy, họ rất giống nhau theo một cách nào đó - có phần mô hình hóa và phán đoán (trong VAE, chúng ta có thể coi việc tái cấu trúc như một loại phán đoán nào đó). Mô hình hóa một phần để học phân phối dữ liệu. Điều gì sẽ xảy ra để đánh giá một phần nếu chúng tôi sẽ cung cấp cho nó một số mẫu không phải từ phân phối đào tạo? Trong trường hợp người phân biệt đối xử GAN được đào tạo tốt sẽ cho chúng tôi biết 0 và lỗi tái cấu trúc của VAE sẽ cao hơn mức trung bình trên dữ liệu đào tạo. Ở đây có: máy dò dị thường không giám sát của chúng tôi, dễ dàng được đào tạo và đánh giá. Và chúng ta có thể nuôi nó bằng một số steroid như khoảng cách thống kê nếu chúng ta muốn (Wasserstein GAN). Trong bài báo này, bạn có thể tìm thấy ví dụ về GAN được sử dụng để phát hiện sự bất thường và ở đây của bộ mã hóa tự động. Tôi cũng thêm bản phác thảo sơ bộ của mình về trình phát hiện dị thường dựa trên bộ mã hóa tự động cho chuỗi thời gian được viết bằng Keras:

4. Mô hình phân biệt đối xử

Tất cả những gì học sâu thực sự là ánh xạ dữ liệu đầu vào đến một không gian nơi nó có thể phân tách hoặc giải thích dễ dàng hơn bằng các mô hình toán học đơn giản như SVM hoặc hồi quy logistic. Các mô hình tạo cũng thực hiện ánh xạ của riêng chúng, hãy bắt đầu với VAEs. Autoencoders ánh xạ mẫu đầu vào vào một số không gian tiềm ẩn có ý nghĩa và về cơ bản chúng ta có thể đào tạo một số mô hình thẳng qua nó. Liệu no co y nghia gi? Có khác với việc chỉ sử dụng các lớp mã hóa và huấn luyện một mô hình để thực hiện một số phân loại trực tiếp không? Nó thực sự là. Không gian tiềm ẩn của bộ mã hóa tự động là giảm kích thước phi tuyến tính phức tạp và trong trường hợp bộ mã hóa tự động biến đổi cũng là một phân phối đa biến, có thể tốt hơn nhiều khi bắt đầu khởi tạo để đào tạo một mô hình phân biệt so với một số khởi tạo ngẫu nhiên.

GAN khó sử dụng hơn cho các nhiệm vụ khác. Họ đã thiết kế để tạo ra các mẫu từ hạt giống ngẫu nhiên và không mong đợi bất kỳ đầu vào nào. Nhưng chúng ta vẫn có thể khai thác chúng dưới dạng phân loại ít nhất theo hai cách. Đầu tiên, đã được nghiên cứu, đang thúc đẩy phân biệt đối xử để thực hiện phân loại một mẫu được tạo thành các lớp khác nhau cùng với việc chỉ nói nếu nó thực hay giả. Chúng ta có thể mong đợi từ trình phân loại thu được sẽ được chuẩn hóa tốt hơn (vì nó đã thấy các loại nhiễu và nhiễu dữ liệu đầu vào khác nhau) và có thêm lớp cho các ngoại lệ / dị thường:

https://towardsdatascience.com/semi-supervised-learning-with-gans-9f3cb128c5e

Thứ hai là cách tiếp cận bị lãng quên một cách không công bằng để phân loại với định lý Bayes, trong đó chúng ta mô hình p (c_k | x) dựa trên p (x | c_k) (chính xác là những gì GAN có điều kiện làm!) Và các linh mục p (x), p (c_k). Câu hỏi chính ở đây là các GAN có thực sự học phân phối dữ liệu không?, Và nó đang được thảo luận trong một số nghiên cứu gần đây.

5. Thích ứng tên miền

Đây là một trong những quyền lực nhất, như đối với tôi. Trong thực tế, chúng ta gần như không bao giờ có cùng nguồn dữ liệu để đào tạo các mô hình và chạy chúng trong môi trường thế giới thực. Trong tầm nhìn máy tính, các điều kiện ánh sáng khác nhau, cài đặt camera hoặc thời tiết có thể khiến mô hình rất chính xác trở nên vô dụng. Trong tiếng lóng hoặc giọng nói phân tích NLP / giọng nói có thể làm hỏng hiệu suất của mô hình của bạn được đào tạo về ngôn ngữ chính xác về ngữ pháp. Trong xử lý tín hiệu có lẽ bạn có các thiết bị hoàn toàn khác nhau để thu thập dữ liệu để đào tạo mô hình và sản xuất. Nhưng chúng ta cũng có thể nhận thấy rằng cả hai loại dữ liệu này đều rất giống nhau. Và chúng ta biết các mô hình học máy thực hiện ánh xạ từ điều kiện này sang điều kiện khác bảo tồn nội dung chính, nhưng thay đổi chi tiết. Vâng, tôi hiện đang chuyển về phong cách, nhưng với mục đích ít sáng tạo hơn.

https://ml4a.github.io/ml4a/style_transfer/

Ví dụ: nếu bạn xử lý một ứng dụng hoạt động trên một số loại camera quan sát, nhưng bạn đã đào tạo mô hình của mình trên các hình ảnh có độ phân giải cao, bạn có thể thử sử dụng GAN để xử lý hình ảnh trước khi khử nhiễu và cải thiện chúng. Ví dụ triệt để hơn tôi có thể cung cấp từ khu vực xử lý tín hiệu: có rất nhiều bộ dữ liệu liên quan đến dữ liệu gia tốc từ điện thoại di động mô tả các hoạt động của những người khác nhau. Nhưng nếu bạn muốn áp dụng các mô hình của bạn được đào tạo về dữ liệu điện thoại trên dây đeo tay thì sao? GAN có thể cố gắng giúp bạn dịch các loại chuyển động khác nhau. Nói chung, các mô hình thế hệ thực hiện việc tạo ra không phải từ một tiếng ồn, nhưng một số mô hình được xác định trước có thể giúp bạn điều chỉnh miền, dịch chuyển hiệp phương sai và các vấn đề khác liên quan đến sự khác biệt trong dữ liệu.

6. Thao tác dữ liệu

Chúng ta đã nói về chuyển phong cách trong đoạn trước. Điều tôi không thể thực sự thích ở đây là chức năng ánh xạ của nó hoạt động trên toàn bộ đầu vào và thay đổi tất cả. Nếu tôi muốn thay đổi mũi trên một số hình ảnh thì sao? Hoặc thay đổi màu sắc của một chiếc xe hơi? Hoặc thay thế một số từ trong một bài phát biểu mà không thay đổi nó hoàn toàn? Nếu chúng ta muốn làm điều này, chúng ta đã giả sử rằng đối tượng của chúng ta có thể được mô tả với một số yếu tố hữu hạn, ví dụ, khuôn mặt là sự kết hợp của mắt, mũi, tóc, môi, v.v. và các yếu tố này có thuộc tính riêng (màu sắc , kích thước vv). Điều gì sẽ xảy ra nếu chúng ta có thể ánh xạ các pixel của mình bằng một bức ảnh tới một số nơi mà chúng ta có thể điều chỉnh các yếu tố này và làm cho mũi to hơn hoặc nhỏ hơn? Có một số khái niệm toán học cho phép nó: giả thuyết đa dạng và biểu diễn không đồng nhất. Tin tốt cho chúng tôi là, bộ điều khiển tự động và, có lẽ, GAN cho phép chúng tôi mô hình hóa phân phối theo cách như vậy để nó kết hợp các yếu tố này.

https://houxianxu.github.io/assets/project/dfcvae

7. Huấn luyện đối thủ

Bạn có thể không đồng ý với tôi khi thêm đoạn về các cuộc tấn công vào các mô hình học máy, nhưng nó có mọi thứ với các mô hình thế hệ (thuật toán tấn công nghịch cảnh thực sự rất đơn giản) và thuật toán đối nghịch (vì chúng ta có một mô hình cạnh tranh với mô hình khác). Có thể bạn đã quen với một khái niệm về các ví dụ đối nghịch: nhiễu loạn nhỏ trong đầu vào mô hình (có thể là một pixel trong ảnh) gây ra hiệu suất hoàn toàn sai. Có nhiều cách khác nhau để chống lại chúng, và một trong những cách cơ bản nhất được gọi là huấn luyện nghịch cảnh: về cơ bản, nó về việc tận dụng các ví dụ đối nghịch để xây dựng các mô hình chính xác hơn.

https://blog.openai.com/adversarial-example-research/

Không đi sâu vào chi tiết, điều đó có nghĩa là chúng ta vẫn có trò chơi hai người: mô hình nghịch cảnh (chỉ đơn giản là gây nhiễu loạn đầu vào với một số epsilon) cần tối đa hóa ảnh hưởng của nó và có một mô hình phân loại cần giảm thiểu tổn thất. Trông rất giống GAN, nhưng với các mục đích khác nhau: làm cho mô hình ổn định hơn trước các cuộc tấn công bất lợi và cải thiện hiệu suất của nó do một số loại tăng cường và thông thường hóa dữ liệu thông minh.

Hành trình

Trong bài viết này, chúng tôi đã thấy một số ví dụ về cách GAN và một số mô hình thế hệ khác có thể được sử dụng cho mục đích khác ngoài việc tạo ra hình ảnh đẹp, giai điệu hoặc văn bản ngắn. Tất nhiên, mục tiêu dài hạn chính của họ sẽ là tạo ra các đối tượng trong thế giới thực được điều chỉnh bởi các tình huống phù hợp, nhưng ngày nay chúng ta có thể khai thác khả năng mô hình hóa phân phối của họ và học các biểu diễn hữu ích để cải thiện đường ống AI hiện tại của chúng tôi, bảo mật dữ liệu của chúng tôi, tìm ra sự bất thường hoặc thích nghi với nhiều hơn trường hợp thực tế. Tôi hy vọng bạn sẽ thấy chúng hữu ích và sẽ áp dụng trong các dự án của bạn. Giữ nguyên!

P.S.
Theo dõi tôi cũng trong Facebook cho các bài viết về AI quá ngắn đối với Medium, Instagram cho nội dung cá nhân và Linkedin!