Nền tảng AI

Transfer Learning là gì?

mm
Thêm Unite.AI vào các nguồn ưu tiên của bạn trên Google

Transfer Learning là gì?

Khi thực hành học máy, việc đào tạo một mô hình có thể mất rất nhiều thời gian. Tạo một kiến trúc mô hình từ đầu, đào tạo mô hình và sau đó tinh chỉnh mô hình là một lượng thời gian và công sức khổng lồ. Một cách hiệu quả hơn để đào tạo một mô hình học máy là sử dụng một kiến trúc đã được định nghĩa trước, có thể có trọng số đã được tính toán trước. Đây là ý tưởng chính đằng sau transfer learning, lấy một mô hình đã được sử dụng và tái sử dụng nó cho một nhiệm vụ mới.

Trước khi đi sâu vào các cách khác nhau mà transfer learning có thể được sử dụng, hãy dành một chút thời gian để hiểu tại sao transfer learning lại là một kỹ thuật mạnh mẽ và hữu ích như vậy.

Giải quyết một vấn đề Deep Learning

Khi bạn đang cố gắng giải quyết một vấn đề học sâu, như xây dựng một bộ phân loại hình ảnh, bạn phải tạo một kiến trúc mô hình và sau đó đào tạo mô hình trên dữ liệu của mình. Việc đào tạo mô hình phân loại liên quan đến việc điều chỉnh trọng số của mạng, một quá trình có thể mất hàng giờ hoặc thậm chí hàng ngày tùy thuộc vào độ phức tạp của cả mô hình và tập dữ liệu. Thời gian đào tạo sẽ tăng theo kích thước của tập dữ liệu và độ phức tạp của kiến trúc mô hình.

Nếu mô hình không đạt được độ chính xác cần thiết cho nhiệm vụ, việc tinh chỉnh mô hình sẽ có thể cần phải được thực hiện và sau đó mô hình sẽ cần phải được đào tạo lại. Điều này có nghĩa là thêm nhiều giờ đào tạo cho đến khi một kiến trúc tối ưu, thời gian đào tạo và phân vùng tập dữ liệu có thể được tìm thấy. Khi bạn xem xét số lượng biến phải được căn chỉnh với nhau để một bộ phân loại có thể hữu ích, nó có ý nghĩa rằng các kỹ sư học máy luôn tìm kiếm những cách dễ dàng và hiệu quả hơn để đào tạo và triển khai mô hình. Vì lý do này, kỹ thuật transfer learning đã được tạo ra.

Sau khi thiết kế và thử nghiệm một mô hình, nếu mô hình chứng minh là hữu ích, nó có thể được lưu và tái sử dụng sau này cho các vấn đề tương tự.

Loại Transfer Learning

Nói chung, có hai loại transfer learning: phát triển một mô hình từ đầu và sử dụng một mô hình đã được đào tạo trước.

Khi bạn phát triển một mô hình từ đầu, bạn sẽ cần tạo một kiến trúc mô hình có khả năng giải thích dữ liệu đào tạo của bạn và trích xuất mẫu từ nó. Sau khi mô hình được đào tạo lần đầu, bạn sẽ có thể cần phải thực hiện các thay đổi đối với nó để có được hiệu suất tối ưu từ mô hình. Sau đó, bạn có thể lưu kiến trúc mô hình và sử dụng nó làm điểm bắt đầu cho một mô hình sẽ được sử dụng cho một nhiệm vụ tương tự.

Trong điều kiện thứ hai – sử dụng một mô hình đã được đào tạo trước – bạn chỉ cần chọn một mô hình đã được đào tạo trước để sử dụng. Nhiều trường đại học và nhóm nghiên cứu sẽ làm cho các thông số của mô hình của họ có sẵn cho sử dụng chung. Kiến trúc của mô hình có thể được tải xuống cùng với trọng số.

Khi thực hiện transfer learning, toàn bộ kiến trúc mô hình và trọng số có thể được sử dụng cho nhiệm vụ tại hand, hoặc chỉ một số phần / lớp của mô hình có thể được sử dụng. Sử dụng chỉ một số phần của mô hình đã được đào tạo trước và đào tạo phần còn lại của mô hình được gọi là tinh chỉnh.

Tinh chỉnh một Mạng

Tinh chỉnh một mạng mô tả quá trình đào tạo chỉ một số lớp trong một mạng. Nếu một tập dữ liệu đào tạo mới rất giống với tập dữ liệu được sử dụng để đào tạo mô hình ban đầu, nhiều trọng số giống nhau có thể được sử dụng.

Số lượng lớp trong mạng mà nên được unfrozen và đào tạo lại sẽ tăng theo kích thước của tập dữ liệu mới. Nếu tập dữ liệu được đào tạo trên là nhỏ, nó là một thực hành tốt hơn để giữ lại hầu hết các lớp như chúng là và chỉ đào tạo một số lớp cuối cùng. Điều này là để ngăn chặn mạng khỏi việc overfitting. Ngoài ra, các lớp cuối cùng của mạng đã được đào tạo trước có thể được loại bỏ và các lớp mới được thêm vào, sau đó được đào tạo. Ngược lại, nếu tập dữ liệu là một tập dữ liệu lớn, có thể lớn hơn tập dữ liệu ban đầu, toàn bộ mạng nên được đào tạo lại. Để sử dụng mạng như một bộ trích xuất tính năng cố định, hầu hết mạng có thể được sử dụng để trích xuất tính năng trong khi chỉ lớp cuối cùng của mạng có thể được unfrozen và đào tạo.

Khi bạn đang tinh chỉnh một mạng, chỉ cần nhớ rằng các lớp đầu tiên của ConvNet là những lớp chứa thông tin đại diện cho các tính năng chung hơn của hình ảnh. Đây là các tính năng như cạnh và màu sắc. Ngược lại, các lớp sau của ConvNet giữ các chi tiết cụ thể hơn cho các lớp riêng lẻ trong tập dữ liệu mà mô hình ban đầu được đào tạo. Nếu bạn đang đào tạo một mô hình trên một tập dữ liệu rất khác với tập dữ liệu ban đầu, bạn sẽ có thể muốn sử dụng các lớp đầu tiên của mô hình để trích xuất tính năng và chỉ đào tạo lại phần còn lại của mô hình.

Ví dụ về Transfer Learning

Các ứng dụng phổ biến nhất của transfer learning có lẽ là những ứng dụng sử dụng dữ liệu hình ảnh làm đầu vào. Đây thường là các nhiệm vụ dự đoán / phân loại. Cách Convolutional Neural Networks giải thích dữ liệu hình ảnh cho phép tái sử dụng các khía cạnh của mô hình, vì các lớp convolutional thường phân biệt các tính năng rất giống nhau. Một ví dụ về một vấn đề transfer learning phổ biến là nhiệm vụ ImageNet 1000, một tập dữ liệu lớn chứa 1000 lớp đối tượng khác nhau. Các công ty phát triển mô hình đạt được hiệu suất cao trên tập dữ liệu này thường phát hành mô hình của họ dưới các giấy phép cho phép người khác tái sử dụng chúng. Một số mô hình đã được tạo ra từ quá trình này bao gồm mô hình Microsoft ResNet (MSFT ), mô hình Google (GOOGL ) Inception và nhóm mô hình Oxford VGG.

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.