Mã tự động là gì?
Tôi là một sinh viên và tôi đang học máy học. Tôi đang tập trung vào các mô hình tạo ra sâu và đặc biệt là các mã tự động mã hóa và mã tự động mã hóa biến thể (VAE) .
Tôi đang cố gắng hiểu khái niệm này, nhưng tôi đang gặp một số vấn đề.
Cho đến nay, tôi đã hiểu rằng một trình mã tự động lấy một đầu vào, ví dụ như một hình ảnh và muốn giảm hình ảnh này thành một không gian tiềm ẩn , nơi chứa các tính năng cơ bản của tập dữ liệu, với một hoạt động mã hóa , sau đó, với một hoạt động của giải mã , nó reconstrunct hình ảnh đó đã mất đi một số thông tin do phần mã hóa.
Sau đó, với một hàm mất mát, nó sẽ tái tạo lại không gian tiềm ẩn và do đó có được các tính năng tiềm ẩn.
về VAE, nó sử dụng phương pháp tiếp cận xác suất, vì vậy chúng ta phải tìm hiểu hiệp phương sai anv nhỏ của một gaussian.
Cho đến nay đây là những gì tôi đã hiểu.
Điều tôi thực sự không rõ là chúng ta đang cố gắng học gì với autoencoders và VAE?
Tôi đã thấy các ví dụ trong đó một hình ảnh không cười thành một khuôn mặt đang cười hoặc một hình ảnh đen trắng thành một hình ảnh có màu.
Nhưng tôi không hiểu khái niệm chính, đó là: autoencoder làm gì?
Tôi thêm vào đây một số nguồn về nơi tôi đã nghiên cứu để ai có nhu cầu có thể xem chúng:
- https://hackernoon.com/autoencoders-deep-learning-bits-1-11731e200694
- https://www.youtube.com/watch?v=yFBFl1cLYx8
- https://www.youtube.com/watch?v=9zKuYvjFFS8
Trả lời
bộ mã hóa tự động làm gì?
Bộ mã hóa tự động đơn giản nhất đưa hình ảnh có chiều cao (giả sử 100K pixel) xuống biểu diễn chiều thấp (ví dụ: vectơ có độ dài 10) và sau đó chỉ sử dụng 10 tính năng đó để cố gắng tạo lại hình ảnh ban đầu. Bạn có thể tưởng tượng một sự tương đồng với con người: Tôi nhìn ai đó, mô tả họ ("cao, tóc đen, ...") rồi sau khi tôi quên họ trông như thế nào, tôi cố gắng phác thảo họ chỉ bằng ghi chú của mình.
chúng ta đang cố gắng học cái gì?
Nói cách khác, tại sao phải bận tâm? Một vài lý do:
- giảm kích thước: 10 tính năng thuận tiện hơn rất nhiều so với 100K pixel. Ví dụ: tôi có thể thực hiện phân loại bằng cách phân cụm trong không gian 10 chiều (trong khi phân nhóm trong không gian 100K chiều sẽ không thể thực hiện được).
- ý nghĩa ngữ nghĩa: nếu mọi việc suôn sẻ, mỗi đặc điểm trong số 10 tính năng sẽ có một số "giải thích" rõ ràng - ví dụ: điều chỉnh một giá trị sẽ làm cho đối tượng trông cũ hơn (mặc dù thông thường nó không đơn giản như vậy). Trái ngược với các giá trị pixel, bị ảnh hưởng bởi quá trình dịch, xoay, v.v.
- Nhận dạng ngoại lệ: nếu tôi huấn luyện bộ mã hóa tự động của mình trên chó, thông thường nó sẽ thực hiện tốt công việc mã hóa và giải mã hình ảnh của chó. Nhưng nếu tôi đặt một con mèo vào, nó có thể sẽ làm một công việc tồi tệ - điều mà tôi có thể nói vì đầu ra trông không giống đầu vào. Vì vậy, tìm kiếm những nơi mà bộ mã hóa tự động hoạt động không tốt là cách phổ biến để tìm kiếm điểm bất thường.
Tôi đã thấy các ví dụ trong đó một hình ảnh chuyển từ một khuôn mặt không cười sang một khuôn mặt tươi cười, hoặc một hình ảnh đen trắng thành một hình ảnh có màu.
Có nhiều loại mã hóa tự động khác nhau. Những gì tôi mô tả ở trên là loại đơn giản nhất. Một loại phổ biến khác là bộ mã hóa tự động "làm xấu" - thay vì tái tạo lại hình ảnh ban đầu, mục tiêu là tạo ra một hình ảnh có liên quan đến hình ảnh gốc, nhưng khác.
Ví dụ cổ điển của điều này là làm giảm giá trị (do đó có tên): bạn có thể chụp một hình ảnh sạch, thêm một loạt nhiễu, chạy nó qua bộ mã hóa tự động và sau đó thưởng cho bộ mã hóa tự động để tạo ra hình ảnh sạch . Vì vậy, đầu vào (hình ảnh nhiễu) thực sự khác với đầu ra mong muốn (hình ảnh sạch). Các ví dụ bạn đưa ra cũng tương tự.
Thách thức trong việc thiết kế các loại bộ mã hóa tự động này thường là mất mát - bạn cần một số cơ chế để thông báo cho bộ mã hóa tự động biết liệu nó có làm đúng hay không.
về VAE, nó sử dụng phương pháp tiếp cận xác suất, vì vậy chúng ta phải tìm hiểu trung bình và hiệp phương sai của một gaussian.
VAE là loại bộ mã hóa tự động thứ ba. Nó hơi đặc biệt vì nó có cơ sở về mặt toán học; không cần số liệu đặc biệt . Bài toán quá phức tạp để giải quyết ở đây, nhưng ý tưởng chính là:
- Chúng tôi muốn không gian tiềm ẩn liên tục. Thay vì gán mỗi lớp cho một góc riêng của không gian tiềm ẩn, chúng ta muốn không gian tiềm có một hình dạng liên tục, được xác định rõ ràng (tức là một Gaussian). Điều này là tốt vì nó buộc không gian tiềm ẩn phải có ý nghĩa về mặt ngữ nghĩa.
- Ánh xạ giữa hình ảnh và không gian tiềm ẩn nên mang tính xác suất hơn là xác định. Điều này là do cùng một chủ thể có thể tạo ra nhiều hình ảnh.
Vì vậy, quy trình làm việc là:
- Bạn bắt đầu với hình ảnh của mình như trước đây
- Như trước đây, bộ mã hóa của bạn xác định một vectơ (giả sử, độ dài 200).
- Nhưng vectơ đó không phải là không gian tiềm ẩn. Thay vào đó, bạn sử dụng vectơ đó làm tham số để xác định một không gian tiềm ẩn. Ví dụ: có thể bạn chọn không gian tiềm ẩn của mình là Gaussian 100 chiều. Gaussian 100 chiều sẽ yêu cầu giá trị trung bình và độ lệch chuẩn trong mỗi thứ nguyên - đây là những gì bạn sử dụng vectơ độ dài 200 của mình.
- Bây giờ bạn có một phân phối xác suất. Bạn lấy mẫu một điểm từ bản phân phối này. Đây là hình ảnh đại diện của bạn trong không gian tiềm ẩn.
- Như trước đây, bộ giải mã của bạn sẽ biến vectơ này thành "đầu ra" mới (giả sử vectơ có độ dài 200K).
- Nhưng, "đầu ra" này không phải là hình ảnh đầu ra của bạn. Thay vào đó, bạn sử dụng các tham số 200K này để xác định Gaussian 100K chiều. Sau đó, bạn lấy mẫu một điểm từ bản phân phối này - đó là hình ảnh đầu ra của bạn.
Tất nhiên, không có gì đặc biệt về một Gaussian, bạn có thể dễ dàng sử dụng một số phân phối tham số khác. Trong thực tế, người ta thường sử dụng Gaussian.
Điều này đôi khi cho kết quả tốt hơn các bộ mã hóa tự động khác. Hơn nữa, đôi khi bạn nhận được kết quả thú vị khi bạn nhìn giữa các lớp trong không gian tiềm ẩn của mình. Khoảng cách của hình ảnh trong không gian tiềm ẩn từ trung tâm cụm đôi khi liên quan đến sự không chắc chắn.
Hơn nữa, có một tính chất tốt đẹp rằng những Gaussian chiều cao này là các phân phối xác suất theo nghĩa toán học chặt chẽ. Chúng ước tính xác suất một hình ảnh nhất định thuộc một lớp nhất định. Vì vậy, có một số ý kiến cho rằng VAE sẽ có thể vượt qua "cái vẫy tay" của học sâu và đặt mọi thứ trở lại nền tảng xác suất Bayes vững chắc. Nhưng tất nhiên, nó chỉ là một ước tính gần đúng và sự xấp xỉ liên quan đến rất nhiều mạng nơ-ron sâu, vì vậy vẫn còn rất nhiều sự vẫy tay vào lúc này.
Nhân tiện, tôi muốn sử dụng câu hỏi này trong các cuộc phỏng vấn - một số lượng đáng kinh ngạc những người tuyên bố có kinh nghiệm với VAE nhưng thực tế không nhận ra rằng VAE khác với AE "thông thường".
Một cách dễ dàng để suy nghĩ về autoencoders là: một pice prticlar của infrmaton có thể được tái tạo lại như thế nào sau khi giảm thiểu hoặc cách khác là reprsentaton được biên dịch. Nếu bạn làm được đến mức này, điều đó có nghĩa là bạn đã tạo lại thành công câu trước đó bằng cách chỉ sử dụng 92 trong số 103 ký tự ban đầu của nó.
Cụ thể hơn, mã tự động là mạng thần kinh được đào tạo để học cách mã hóa dữ liệu hiệu quả theo cách không bị giám sát. Mục đích là tìm hiểu cách biểu diễn của một tập dữ liệu nhất định, bằng cách huấn luyện mạng bỏ qua các tín hiệu "không quan trọng" như nhiễu. Thông thường AE được xem xét để giảm kích thước.
Thực tế, một AE
- ban đầu nén dữ liệu đầu vào thành một biểu diễn không gian tiềm ẩn
- tạo lại đầu ra từ biểu diễn không gian tiềm ẩn này
- tính toán sự khác biệt giữa đầu vào và đầu ra được định nghĩa là tổn thất tái thiết.
Trong vòng lặp đào tạo này, AE giảm thiểu tổn thất xây dựng lại này để đầu ra giống với đầu vào nhất có thể.
Một cách tiếp cận mà tôi thấy hữu ích khi xem xét tự động mã là kết quả sau: trong khi các phương pháp như PCA xác định các trục của biến thiên cực đại trong không gian đầu vào, việc giới thiệu các chức năng kích hoạt phi tuyến tính trong tự động mã cho phép xác định các trục của cực đại biến thể nhúng trong một biến đổi phi tuyến tính (có thể) của không gian.
Ví dụ, hãy xem xét dữ liệu được
Quan sát rằng không có các chức năng kích hoạt phi tuyến tính, một bộ mã tự động về cơ bản trở thành tương đương với PCA - tùy thuộc vào sự thay đổi về cơ sở. Một bài tập hữu ích có thể là xem xét tại sao lại như vậy.