AI 101

Autoencoder là gì?

mm

Nếu bạn đã đọc về các kỹ thuật học không giám sát trước đây, bạn có thể đã gặp thuật ngữ “autoencoder”. Autoencoder là một trong những cách chính mà các mô hình học không giám sát được phát triển. Tuy nhiên, autoencoder chính xác là gì?

Tóm lại, autoencoder hoạt động bằng cách nhận dữ liệu, nén và mã hóa dữ liệu, sau đó tái tạo dữ liệu từ biểu diễn mã hóa. Mô hình được đào tạo cho đến khi mất mát được giảm thiểu và dữ liệu được tái tạo càng chính xác càng tốt. Qua quá trình này, autoencoder có thể học các tính năng quan trọng của dữ liệu. Mặc dù đó là một định nghĩa nhanh về autoencoder, nhưng nó sẽ rất hữu ích khi chúng ta xem xét kỹ lưỡng autoencoder và hiểu rõ hơn về cách chúng hoạt động. Bài viết này sẽ cố gắng làm rõ autoencoder, giải thích kiến trúc của autoencoder và các ứng dụng của chúng.

Autoencoder là gì?

Autoencoder là mạng nơ-ron. Mạng nơ-ron được cấu thành từ nhiều lớp, và đặc điểm định nghĩa của autoencoder là các lớp đầu vào chứa chính xác lượng thông tin như lớp đầu ra. Lý do tại sao lớp đầu vào và lớp đầu ra có cùng số đơn vị là vì autoencoder nhằm mục đích sao chép dữ liệu đầu vào. Nó xuất ra một bản sao của dữ liệu sau khi phân tích và tái tạo nó theo cách không giám sát.

Dữ liệu di chuyển qua autoencoder không chỉ được ánh xạ trực tiếp từ đầu vào đến đầu ra, nghĩa là mạng không chỉ sao chép dữ liệu đầu vào. Có ba thành phần của autoencoder: phần mã hóa (đầu vào) nén dữ liệu, một thành phần xử lý dữ liệu nén (hoặc cổ chai), và phần giải mã (đầu ra). Khi dữ liệu được đưa vào autoencoder, nó được mã hóa và sau đó nén xuống kích thước nhỏ hơn. Mạng được đào tạo trên dữ liệu mã hóa/nén và nó xuất ra một bản tái tạo của dữ liệu đó.

Vậy tại sao bạn lại muốn đào tạo một mạng để chỉ tái tạo dữ liệu được đưa vào? Lý do là mạng học được “bản chất” hoặc các tính năng quan trọng nhất của dữ liệu đầu vào. Sau khi đào tạo mạng, một mô hình có thể được tạo ra để tổng hợp dữ liệu tương tự, với việc thêm hoặc bớt một số tính năng mục tiêu. Ví dụ, bạn có thể đào tạo autoencoder trên hình ảnh mờ và sau đó sử dụng mô hình đã đào tạo để loại bỏ độ mờ/ tiếng ồn từ hình ảnh.

Kiến trúc Autoencoder

Hãy xem xét kiến trúc của autoencoder. Chúng ta sẽ thảo luận về kiến trúc chính của autoencoder ở đây. Có các biến thể của kiến trúc chung này mà chúng ta sẽ thảo luận trong phần dưới.

Ảnh: Michela Massi qua Wikimedia Commons,(https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

Como đã đề cập trước đó, autoencoder có thể được chia thành ba thành phần khác nhau: bộ mã hóa, cổ chai và bộ giải mã.

Phần mã hóa của autoencoder thường là mạng nơ-ron hướng tiếp, kết nối dày đặc. Mục đích của các lớp mã hóa là lấy dữ liệu đầu vào và nén nó thành một biểu diễn không gian潜, tạo ra một biểu diễn mới của dữ liệu có giảm chiều.

Các lớp mã, hoặc cổ chai, xử lý biểu diễn nén của dữ liệu. Cổ chai mã được thiết kế cẩn thận để xác định các phần quan trọng nhất của dữ liệu quan sát, hoặc để nói cách khác, các tính năng của dữ liệu quan trọng nhất để tái tạo dữ liệu. Mục tiêu ở đây là xác định những khía cạnh của dữ liệu cần được bảo tồn và những khía cạnh có thể bị loại bỏ. Cổ chai mã cần cân bằng hai yếu tố: kích thước biểu diễn (làm thế nào để biểu diễn được nén) và tính năng biến đổi. Cổ chai thực hiện hoạt động kích hoạt phần tử theo trọng số và thiên vị của mạng. Lớp cổ chai cũng đôi khi được gọi là biểu diễn潜 hoặc biến潜.

Lớp giải mã là lớp chịu trách nhiệm lấy dữ liệu nén và chuyển đổi nó trở lại thành một biểu diễn có cùng kích thước với dữ liệu ban đầu, không thay đổi. Chuyển đổi được thực hiện với biểu diễn không gian潜 được tạo ra bởi bộ mã hóa.

Kiến trúc cơ bản nhất của autoencoder là kiến trúc hướng tiếp, với cấu trúc tương tự như một perceptron đơn lớp được sử dụng trong các mạng nơ-ron đa lớp. Giống như các mạng nơ-ron hướng tiếp thông thường, autoencoder được đào tạo thông qua việc sử dụng lan truyền ngược.

Thuộc tính của Autoencoder

Có nhiều loại autoencoder, nhưng chúng đều có một số thuộc tính chung.

Autoencoder học tự động. Chúng không cần nhãn, và nếu được cung cấp đủ dữ liệu, rất dễ để autoencoder đạt được hiệu suất cao trên một loại dữ liệu đầu vào cụ thể.

Autoencoder phụ thuộc vào dữ liệu. Điều này có nghĩa là chúng chỉ có thể nén dữ liệu tương tự như dữ liệu mà autoencoder đã được đào tạo. Autoencoder cũng bị mất mát, nghĩa là đầu ra của mô hình sẽ bị suy giảm so với dữ liệu đầu vào.

Khi thiết kế autoencoder, các kỹ sư học máy cần chú ý đến bốn siêu tham số mô hình khác nhau: kích thước mã, số lớp, số nốt mỗi lớp và hàm mất mát.

Kích thước mã quyết định số nốt bắt đầu từ phần giữa của mạng, và ít nốt hơn sẽ nén dữ liệu nhiều hơn. Trong một autoencoder sâu, trong khi số lớp có thể là bất kỳ số nào mà kỹ sư cho là phù hợp, số nốt trong một lớp nên giảm khi bộ mã hóa tiếp tục. Ngược lại, điều này đúng trong bộ giải mã, nghĩa là số nốt mỗi lớp nên tăng khi các lớp giải mã tiếp cận lớp cuối cùng. Cuối cùng, hàm mất mát của autoencoder thường là entropy交 hoặc lỗi bình phương trung bình. Entropy交 là phù hợp cho các trường hợp mà giá trị đầu vào của dữ liệu nằm trong phạm vi 0 – 1.

Loại Autoencoder

Như đã đề cập ở trên, có các biến thể của kiến trúc autoencoder cổ điển. Hãy xem xét các kiến trúc autoencoder khác nhau.

Loại giãn

Ảnh: Michela Massi qua Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)

Khi autoencoder thường có cổ chai nén dữ liệu thông qua việc giảm số nốt, autoencoder giãn là một giải pháp thay thế cho định dạng hoạt động thông thường đó. Trong mạng giãn, các lớp ẩn giữ nguyên kích thước như các lớp mã hóa và giải mã. Thay vào đó, các hoạt động trong một lớp nhất định bị phạt, thiết lập để hàm mất mát bắt được các tính năng thống kê của dữ liệu đầu vào tốt hơn. Để nói cách khác, trong khi các lớp ẩn của autoencoder giãn có nhiều đơn vị hơn autoencoder thông thường, chỉ có một tỷ lệ nhất định trong số chúng hoạt động tại bất kỳ thời điểm nào. Các hàm hoạt động quan trọng nhất được bảo tồn và các hàm khác bị bỏ qua, và ràng buộc này giúp mạng xác định các tính năng quan trọng nhất của dữ liệu đầu vào.

Loại co lại

Autoencoder co lại được thiết kế để chống lại các biến thể nhỏ trong dữ liệu, duy trì một biểu diễn nhất quán của dữ liệu. Điều này được thực hiện bằng cách áp dụng một phạt vào hàm mất mát. Kỹ thuật điều chỉnh này dựa trên chuẩn Frobenius của ma trận Jacobi cho các hoạt động mã hóa đầu vào. Hiệu ứng của kỹ thuật điều chỉnh này là mô hình bị buộc phải xây dựng một mã hóa mà các đầu vào tương tự sẽ có mã hóa tương tự.

Loại tích hợp

Autoencoder tích hợp mã hóa dữ liệu đầu vào bằng cách chia dữ liệu thành các phần nhỏ và sau đó chuyển đổi các phần nhỏ này thành tín hiệu đơn giản được tổng hợp lại để tạo ra một biểu diễn mới của dữ liệu. Tương tự như mạng nơ-ron tích hợp, một autoencoder tích hợp chuyên về việc học dữ liệu hình ảnh, và nó sử dụng một bộ lọc được di chuyển trên toàn bộ phần hình ảnh theo từng phần. Các mã hóa được tạo ra bởi lớp mã hóa có thể được sử dụng để tái tạo hình ảnh, phản chiếu hình ảnh hoặc sửa đổi hình học của hình ảnh. Khi các bộ lọc đã được học bởi mạng, chúng có thể được sử dụng trên bất kỳ đầu vào tương tự nào để trích xuất các tính năng của hình ảnh.

Loại làm giảm tiếng ồn

Ảnh: MAL qua Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

Autoencoder làm giảm tiếng ồn đưa tiếng ồn vào mã hóa, kết quả là một mã hóa bị hỏng so với dữ liệu đầu vào ban đầu. Biểu diễn bị hỏng này của dữ liệu được sử dụng để đào tạo mô hình, nhưng hàm mất mát so sánh các giá trị đầu ra với dữ liệu đầu vào ban đầu và không phải với dữ liệu đầu vào bị hỏng. Mục tiêu là mạng sẽ có thể tái tạo phiên bản gốc, không bị hỏng của hình ảnh. Bằng cách so sánh dữ liệu bị hỏng với dữ liệu ban đầu, mạng học được các tính năng quan trọng nhất của dữ liệu và các tính năng không quan trọng / hỏng. Nói cách khác, để mô hình có thể làm giảm tiếng ồn từ hình ảnh bị hỏng, nó phải đã trích xuất các tính năng quan trọng nhất của dữ liệu hình ảnh.

Loại biến thể

Autoencoder biến thể hoạt động bằng cách đưa ra các giả định về cách các biến潜 của dữ liệu được phân phối. Một autoencoder biến thể tạo ra một phân phối xác suất cho các tính năng khác nhau của hình ảnh đào tạo / các thuộc tính潜. Khi đào tạo, bộ mã hóa tạo ra các phân phối潜 cho các tính năng khác nhau của hình ảnh đầu vào.

 

Bởi vì mô hình học các tính năng / hình ảnh như phân phối Gaussian thay vì giá trị rời rạc, nó có thể được sử dụng để tạo ra hình ảnh mới. Phân phối Gaussian được lấy mẫu để tạo ra một vector, vector này được đưa vào mạng giải mã, mạng này sẽ tạo ra hình ảnh dựa trên vector mẫu này. Về cơ bản, mô hình học các tính năng chung của hình ảnh đào tạo và gán cho chúng một xác suất nhất định rằng chúng sẽ xảy ra. Phân phối xác suất sau đó có thể được sử dụng để đảo ngược một hình ảnh, tạo ra hình ảnh mới tương tự như hình ảnh đào tạo ban đầu.

Khi đào tạo mạng, dữ liệu mã hóa được phân tích và mô hình nhận dạng đầu ra hai vector, rút ra trung bình và độ lệch chuẩn của hình ảnh. Một phân phối được tạo ra dựa trên các giá trị này. Điều này được thực hiện cho các trạng thái潜 khác nhau. Bộ giải mã sau đó lấy mẫu ngẫu nhiên từ phân phối tương ứng và sử dụng chúng để tái tạo các đầu vào ban đầu của mạng.

Ứng dụng Autoencoder

Autoencoder có thể được sử dụng cho nhiều ứng dụng khác nhau, nhưng chúng thường được sử dụng cho các nhiệm vụ như giảm chiều, làm giảm tiếng ồn dữ liệu, trích xuất tính năng, tạo hình ảnh, dự đoán tuần tự và hệ thống khuyến nghị.

Làm giảm tiếng ồn dữ liệu là việc sử dụng autoencoder để loại bỏ tiếng ồn / hạt từ hình ảnh. Tương tự, autoencoder có thể được sử dụng để sửa chữa các loại hư hỏng hình ảnh khác, như hình ảnh mờ hoặc hình ảnh bị thiếu phần. Giảm chiều có thể giúp các mạng có khả năng cao học các tính năng hữu ích của hình ảnh, nghĩa là autoencoder có thể được sử dụng để tăng cường việc đào tạo các loại mạng nơ-ron khác. Điều này cũng đúng khi sử dụng autoencoder để trích xuất tính năng, vì autoencoder có thể được sử dụng để xác định các tính năng của các tập dữ liệu đào tạo khác để đào tạo các mô hình khác.

Về việc tạo hình ảnh, autoencoder có thể được sử dụng để tạo ra hình ảnh giả hoặc nhân vật hoạt hình, điều này có ứng dụng trong việc thiết kế hệ thống nhận dạng khuôn mặt hoặc tự động hóa một số khía cạnh của hoạt hình.

Mô hình dự đoán tuần tự có thể được sử dụng để xác định cấu trúc thời gian của dữ liệu, nghĩa là autoencoder có thể được sử dụng để tạo ra sự kiện tiếp theo trong một tuần tự. Vì lý do này, autoencoder có thể được sử dụng để tạo ra video. Cuối cùng, autoencoder sâu có thể được sử dụng để tạo ra hệ thống khuyến nghị bằng cách nhận ra các mẫu liên quan đến sự quan tâm của người dùng, với bộ mã hóa phân tích dữ liệu tương tác của người dùng và bộ giải mã tạo ra các khuyến nghị phù hợp với các mẫu đã thiết lập.

Blogger và lập trình viên với chuyên môn về Machine Learning Deep Learning topics. Daniel hy vọng giúp đỡ người khác sử dụng sức mạnh của AI cho lợi ích xã hội.