Connect with us

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”. Autoencoders 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. Vậy autoencoder chính xác là gì?

Ngắn gọn, autoencoders hoạt động bằng cách lấy 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, một 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, nó sẽ có lợi khi xem xét kỹ lưỡng autoencoders 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õ autoencoders, giải thích kiến trúc của autoencoders và ứng dụng của chúng.

Autoencoder là gì?

Autoencoders là mạng nơ-ron. Mạng nơ-ron bao gồm nhiều lớp, và đặc điểm định nghĩa của một autoencoder là lớp đầu vào chứa chính xác lượng thông tin như lớp đầu ra. Lý do 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 một 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 một 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ổ), và phần giải mã (đầu ra). Khi dữ liệu được đưa vào một 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 bạn đã đà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 một 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 một autoencoder. Chúng tôi sẽ thảo luận về kiến trúc chính của một autoencoder ở đây. Có các biến thể trên kiến trúc chung này mà chúng tôi sẽ thảo luận trong phần dưới.

Photo: Michela Massi via Wikimedia Commons,(https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

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

Phần mã hóa của autoencoder thường là một mạng nơ-ron馳 tiến, 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ó kích thước giảm.

Các lớp mã, hoặc瓶 cổ, xử lý biểu diễn nén của dữ liệu. Mã瓶 cổ đượ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 được, 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 nào của dữ liệu cần được bảo tồn và những khía cạnh nào có thể bị loại bỏ. Mã瓶 cổ 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 số liên quan. Mã瓶 cổ thực hiện hoạt động kích hoạt phần tử theo từng phần tử trên trọng số và偏差 của mạng. Lớp瓶 cổ đôi khi cũng được gọi là biểu diễn潜伏 hoặc biến số潜伏.

Lớp giải mã là thứ 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 mã hóa.

Kiến trúc cơ bản nhất của một autoencoder là một kiến trúc馳 tiến, với cấu trúc giống 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馳 tiến thông thường, autoencoder được đào tạo thông qua việc sử dụng ngược.

Thuộc tính của Autoencoder

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

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

Autoencoders là cụ thể cho 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. Autoencoders 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ế một 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 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 mã hóa tiến hành. Ngược lại, điều ngược lại áp dụng cho 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ến gần đến lớp cuối cùng. Cuối cùng, hàm mất mát của một autoencoder thường là entropy交叉二元 hoặc lỗi bình phương trung bình. Entropy交叉二元 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ể trên kiến trúc autoencoder cổ điển. Hãy xem xét các kiến trúc autoencoder khác nhau.

Loose

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

Trong khi autoencoders thường có một瓶 cổ nén dữ liệu thông qua việc giảm số nốt, autoencoders loose là một thay thế cho định dạng hoạt động điển hình đó. Trong một mạng loose, các lớp ẩn giữ cùng kích thước với 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 nó để hàm mất mát tốt hơn nắm bắt các tính năng thống kê của dữ liệu đầu vào. Để nói cách khác, trong khi các lớp ẩn của một autoencoder loose có nhiều đơn vị hơn một autoencoder truyền thống, chỉ có một tỷ lệ nhất định trong số chúng được kích hoạt tại bất kỳ thời điểm nào. Các hàm hoạt động ảnh hưở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.

Co

Autoencoders co đượ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ó các mã hóa tương tự.

Convolutional

Autoencoders convolutional 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 các 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. Giống như mạng nơ-ron convolutional, một autoencoder convolutional 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 từng phần một. 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. Một 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.

Denoising

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

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

Variational

Autoencoders variational 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 variational 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潜伏.

 

Bởi vì mô hình học các tính năng hoặc 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 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 kỹ thuật hình ảnh, tạo ra hình ảnh mới giống với 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. Sau đó, giải mã 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

Autoencoders 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, loại bỏ tiếng ồn, 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ị.

Loại bỏ tiếng ồn là việc sử dụng autoencoders để loại bỏ độ mờ/ tiếng ồn từ hình ảnh. Tương tự, autoencoders 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à autoencoders có thể được sử dụng để tăng cường đào tạo của các loại mạng nơ-ron khác. Điều này cũng đúng khi sử dụng autoencoders để trích xuất tính năng, vì autoencoders 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, autoencoders 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à một 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, một autoencoder có thể được sử dụng để tạo video. Cuối cùng, autoencoders 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 mã hóa phân tích dữ liệu tương tác của người dùng và 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.