Yandex mở công nghệ máy học CatBoost. So sánh các thư viện deep learning sử dụng ví dụ về bài toán phân loại chữ số viết tay

  • Python,
  • Học máy,
  • Công nghệ tìm kiếm
  • Hôm nay Yandex đã đăng trong mã nguồn mở thư viện riêng CatBoost, được phát triển dựa trên kinh nghiệm nhiều năm của công ty trong lĩnh vực này học máy. Với sự trợ giúp của nó, bạn có thể đào tạo các mô hình một cách hiệu quả trên dữ liệu không đồng nhất, bao gồm cả những mô hình khó biểu diễn dưới dạng số (ví dụ: loại đám mây hoặc danh mục sản phẩm). Nguồn, tài liệu, điểm chuẩn và công cụ cần thiếtđã được xuất bản trên GitHub theo giấy phép Apache 2.0.

    CatBoost là phương pháp mới học máy dựa trên việc tăng cường độ dốc. Nó đang được triển khai trong Yandex để giải quyết các vấn đề về xếp hạng, dự đoán và xây dựng đề xuất. Hơn nữa, nó đã được sử dụng trong khuôn khổ hợp tác với Tổ chức Nghiên cứu Hạt nhân Châu Âu (CERN) và tổ chức công nghiệp. Khách hàng Yandex Nhà máy dữ liệu. Vậy CatBoost khác với các sản phẩm tương tự nguồn mở khác như thế nào? Tại sao tăng cường mà không phải phương pháp mạng lưới thần kinh? Công nghệ này có liên quan như thế nào với Matrixnet đã được biết đến? Và mèo phải làm gì với nó? Hôm nay chúng tôi sẽ trả lời tất cả những câu hỏi này.

    Thuật ngữ “học máy” xuất hiện vào những năm 50. Thuật ngữ này đề cập đến nỗ lực dạy máy tính giải quyết những vấn đề dễ dàng đối với con người, nhưng rất khó để chính thức hóa cách giải quyết chúng. Kết quả của việc học máy là một máy tính có thể thể hiện hành vi không được thiết kế rõ ràng trong đó. TRONG thế giới hiện đại Chúng ta gặp phải thành quả của học máy nhiều lần mỗi ngày, nhiều người trong chúng ta thậm chí không hề biết. Nó được sử dụng để xây dựng các dải băng trong trong mạng xã hội, liệt kê " Sản phẩm tương tự» trong các cửa hàng trực tuyến, khi phát hành các khoản vay từ ngân hàng và xác định chi phí bảo hiểm. Công nghệ học máy được sử dụng để tìm kiếm khuôn mặt trong ảnh hoặc nhiều bộ lọc ảnh. Nhân tiện, đối với trường hợp thứ hai, mạng lưới thần kinh thường được sử dụng và chúng được viết thường xuyên đến mức có thể có quan điểm sai lầm rằng đây là “viên đạn bạc” để giải quyết các vấn đề ở bất kỳ mức độ phức tạp nào. Nhưng điều đó không đúng.

    Mạng lưới thần kinh hoặc tăng cường độ dốc

    Trên thực tế, học máy rất khác: có một số lượng lớn các phương pháp khác nhau và mạng lưới thần kinh chỉ là một trong số đó. Điều này được minh họa bằng kết quả của các cuộc thi trên nền tảng Kaggle, nơi mọi người giành chiến thắng trong nhiều cuộc thi khác nhau phương pháp khác nhau và việc tăng cường độ dốc mang lại chiến thắng cho nhiều người.

    Mạng lưới thần kinh rất xuất sắc trong việc giải quyết một số vấn đề nhất định – ví dụ: những vấn đề mà bạn cần làm việc với dữ liệu đồng nhất. Dữ liệu đồng nhất bao gồm, ví dụ, hình ảnh, âm thanh hoặc văn bản. Trong Yandex, chúng giúp chúng tôi hiểu rõ hơn truy vấn tìm kiếm, tìm kiếm hình ảnh tương tự trên Internet, nhận dạng giọng nói của bạn trong Navigator và hơn thế nữa. Nhưng đây không phải là tất cả các nhiệm vụ của máy học. Có rất nhiều thách thức nghiêm trọng không thể giải quyết chỉ bằng mạng lưới thần kinh - chúng cần tăng cường độ dốc. Phương pháp này không thể thiếu khi có nhiều dữ liệu và cấu trúc của nó không đồng nhất.

    Ví dụ: nếu bạn cần dự báo thời tiết chính xác, có tính đến số lượng lớn các yếu tố (nhiệt độ, độ ẩm, dữ liệu radar, quan sát của người dùng và nhiều yếu tố khác). Hoặc nếu bạn cần xếp hạng chất lượng kết quả tìm kiếm– đây là điều đã thúc đẩy Yandex phát triển phương pháp học máy của riêng mình.

    Mạng ma trận

    Đầu tiên công cụ tìm kiếm lúc đó không phức tạp như bây giờ. Trên thực tế, lúc đầu nó chỉ là tìm kiếm từ - có rất ít trang web nên không có nhiều sự cạnh tranh giữa chúng. Sau đó có nhiều trang hơn và việc xếp hạng chúng trở nên cần thiết. Nhiều sự phức tạp khác nhau bắt đầu được tính đến - tần số từ, tf-idf. Sau đó, có quá nhiều trang về bất kỳ chủ đề nào, bước đột phá quan trọng đầu tiên đã xảy ra - họ bắt đầu tính đến các liên kết.

    Chẳng bao lâu sau, Internet trở nên quan trọng về mặt thương mại và nhiều kẻ lừa đảo xuất hiện cố gắng đánh lừa các thuật toán đơn giản tồn tại vào thời điểm đó. Và bước đột phá quan trọng thứ hai đã xảy ra - các công cụ tìm kiếm bắt đầu sử dụng kiến ​​thức về hành vi của người dùng để hiểu trang nào tốt và trang nào không.

    Khoảng mười năm trước, trí óc con người không còn đủ khả năng để tìm ra cách xếp hạng tài liệu. Bạn có thể nhận thấy rằng số lượng kết quả được tìm thấy cho hầu hết mọi truy vấn đều rất lớn: hàng trăm nghìn, thường là hàng triệu kết quả. Hầu hết chúng đều không thú vị, vô dụng, chỉ đề cập ngẫu nhiên các từ truy vấn hoặc nói chung là spam. Để trả lời yêu cầu của bạn, bạn cần chọn ngay 10 kết quả hàng đầu từ tất cả các kết quả tìm thấy. Hãy viết chương trình thực hiện việc này với chất lượng chấp nhận được, đã trở nên vượt quá khả năng của một lập trình viên con người. Quá trình chuyển đổi tiếp theo đã xảy ra - các công cụ tìm kiếm bắt đầu tích cực sử dụng máy học.

    Trở lại năm 2009, Yandex đã giới thiệu phương pháp Matrixnet của riêng họ, dựa trên việc tăng cường độ dốc. Chúng ta có thể nói rằng việc xếp hạng được hỗ trợ bởi trí tuệ tập thể của người dùng và “sự khôn ngoan của đám đông”. Thông tin về các trang web và hành vi của mọi người được chuyển đổi thành nhiều yếu tố, mỗi yếu tố được Matrixnet sử dụng để xây dựng công thức xếp hạng. Trên thực tế, công thức xếp hạng hiện nay được viết bằng máy. Nhân tiện, chúng tôi cũng sử dụng kết quả của mạng lưới thần kinh làm các yếu tố riêng lẻ (ví dụ: đây là cách hoạt động của thuật toán Palekh mà chúng tôi đã nói đến năm ngoái).

    Một tính năng quan trọng của Matrixnet là nó có khả năng chống lại tình trạng trang bị quá mức. Điều này cho phép bạn tính đến rất nhiều yếu tố xếp hạng và đồng thời học hỏi từ tương đối số lượng nhỏ dữ liệu mà không sợ máy sẽ tìm ra những mẫu không tồn tại. Các phương pháp học máy khác có thể xây dựng thêm công thức đơn giản với ít yếu tố hơn hoặc yêu cầu mẫu huấn luyện lớn hơn.

    Một cái khác tính năng quan trọng Matrixnet là công thức xếp hạng có thể được cấu hình riêng cho các lớp truy vấn khá hẹp. Ví dụ: chỉ cải thiện chất lượng tìm kiếm cho các truy vấn về âm nhạc. Đồng thời, thứ hạng cho các loại truy vấn khác sẽ không bị xấu đi.

    Chính Matrixnet và những ưu điểm của nó đã hình thành nên nền tảng của CatBoost. Nhưng tại sao chúng ta lại cần phát minh ra thứ gì đó mới mẻ?

    Gần như phương pháp hiện đại Dựa trên việc tăng cường độ dốc, nó hoạt động với các con số. Ngay cả khi đầu vào của bạn là thể loại âm nhạc, loại đám mây hay màu sắc, dữ liệu này vẫn cần được mô tả bằng ngôn ngữ của những con số. Điều này dẫn đến sự biến dạng về bản chất của chúng và làm giảm độ chính xác của mô hình.

    Hãy chứng minh điều này bằng một ví dụ cơ bản với danh mục sản phẩm trong cửa hàng. Các sản phẩm có rất ít mối quan hệ với nhau và không có khuôn mẫu nào giữa chúng cho phép chúng được đặt hàng và gán một con số có ý nghĩa cho mỗi sản phẩm. Do đó, trong tình huống này, mỗi sản phẩm chỉ được gán một id nối tiếp (ví dụ: theo chương trình kế toán của cửa hàng). Thứ tự của các số này không có ý nghĩa gì nhưng thuật toán sẽ sử dụng thứ tự này và rút ra kết luận sai từ đó.

    Một chuyên gia học máy có kinh nghiệm có thể nghĩ ra một cách thông minh hơn để biến các đặc điểm phân loại thành số, nhưng việc xử lý trước như vậy sẽ dẫn đến mất một số thông tin và dẫn đến suy giảm chất lượng của giải pháp cuối cùng.

    Đó là lý do tại sao điều quan trọng là phải dạy máy làm việc không chỉ với các con số mà còn với các danh mục trực tiếp, các mẫu mà nó sẽ xác định một cách độc lập mà không cần “trợ giúp” thủ công của chúng tôi. Và chúng tôi đã thiết kế CatBoost để hoạt động tốt như nhau ngay từ đầu với cả tính năng số và phân loại. Nhờ đó nó hiển thị được nhiều hơn chất lượng caođào tạo khi làm việc với dữ liệu không đồng nhất hơn các giải pháp thay thế. Nó có thể được sử dụng nhiều nhất Những khu vực khác nhau- từ khu vực ngân hàng tới ngành công nghiệp.

    Nhân tiện, tên của công nghệ này xuất phát từ Categorical Boosting. Và không một con mèo nào bị tổn hại trong quá trình phát triển.

    Điểm chuẩn

    Chúng ta có thể nói rất lâu về sự khác biệt về mặt lý thuyết của thư viện, nhưng tốt hơn hết là hãy chỉ ra điều đó trong thực tế một lần. Để rõ ràng, chúng tôi đã so sánh hoạt động của thư viện CatBoost với tương tự mở XGBoost, LightGBM và H20 trên một bộ dữ liệu công khai. Và đây là kết quả (càng nhỏ càng tốt): https://catboost.yandex/#benchmark

    Do đó, chúng tôi không muốn là vô căn cứ, do đó, cùng với thư viện, mô tả về quá trình so sánh, mã để khởi chạy các phương thức so sánh và vùng chứa các phiên bản đã sử dụng của tất cả các thư viện đều được đăng dưới dạng nguồn mở. Bất kỳ người dùng nào cũng có thể lặp lại thử nghiệm ở nhà hoặc trên dữ liệu của riêng họ.

    CatBoost trong thực tế

    Phương pháp mới đã được thử nghiệm trên các dịch vụ Yandex. Nó được sử dụng để cải thiện kết quả tìm kiếm, xếp hạng nguồn cấp dữ liệu đề xuất Yandex.Zen và tính toán dự báo thời tiết trong công nghệ Meteum - và trong mọi trường hợp, nó cho thấy nó tốt hơn Matrixnet. Trong tương lai, CatBoost sẽ hoạt động trên các dịch vụ khác. Chúng tôi sẽ không dừng lại ở đây - tốt hơn hết là kể ngay cho bạn về Máy Va chạm Hadron Lớn (LHC).

    CatBoost cũng đã tìm được ứng dụng trong khuôn khổ hợp tác với Tổ chức Nghiên cứu Hạt nhân Châu Âu. LHC vận hành máy dò LHCb, máy dò này được sử dụng để nghiên cứu sự bất đối xứng của vật chất và phản vật chất trong tương tác của các quark nặng, đẹp. Để theo dõi chính xác các hạt khác nhau được phát hiện trong một thí nghiệm, có một số bộ phận cụ thể trong máy dò, mỗi bộ phận xác định tính chất đặc biệt của các hạt. Hầu hết nhiệm vụ đầy thử tháchđiều này liên quan đến việc kết hợp thông tin với phần khác nhau máy dò thành kiến ​​thức tổng hợp, chính xác nhất về hạt. Đây là lúc máy học ra tay giải cứu. Bằng cách sử dụng CatBoost để kết hợp dữ liệu, các nhà khoa học đã cải thiện được đặc tính chất lượng của giải pháp cuối cùng. Kết quả CatBoost là kết quả tốt hơn thu được bằng các phương pháp khác.

    Làm cách nào để bắt đầu sử dụng CatBoost?

    Để hoạt động với CatBoost, chỉ cần cài đặt nó trên máy tính của bạn. Thư viện hỗ trợ hệ điều hành Linux, Windows và macOS và có sẵn bằng nhiều ngôn ngữ Lập trình Python và R. Yandex cũng đã phát triển một chương trình trực quan

    Chào mọi người!

    Trong bài viết này, tôi sẽ nói về một cách mới để lập trình bằng Python.

    Điều này không giống lập trình mà giống tạo bài viết hơn (báo cáo/trình diễn/nghiên cứu/ví dụ): bạn có thể chèn văn bản giải thích thông thường giữa các khối mã Python. Kết quả của việc thực thi mã không chỉ là số và văn bản (như trường hợp của bảng điều khiển khi làm việc với Python), mà còn là đồ thị, sơ đồ, hình ảnh...

    Ví dụ về các tài liệu bạn có thể tạo:

    Trông mát mẻ? Bạn có muốn tạo các tài liệu tương tự? Sau đó bài viết này là dành cho bạn!

    Mạng lưới thần kinh được tạo và đào tạo chủ yếu bằng Python. Vì vậy, điều rất quan trọng là phải có hiểu biết cơ bản về cách viết chương trình trong đó. Trong bài viết này tôi sẽ nói ngắn gọn và rõ ràng về các khái niệm cơ bản của ngôn ngữ này: biến, hàm, lớp và mô-đun.

    Tài liệu này dành cho những người không quen với ngôn ngữ lập trình.

    Đầu tiên bạn cần cài đặt Python. Sau đó, bạn cần cài đặt một môi trường thuận tiện để viết chương trình bằng Python. Cổng thông tin được dành riêng cho hai bước này.

    Nếu mọi thứ đã được cài đặt và cấu hình, bạn có thể bắt đầu.

    Mạng lưới thần kinh bạn phải viết nó bằng một số ngôn ngữ lập trình. Có rất nhiều trong số chúng, nhưng tôi khuyến nghị (và sử dụng trong sách giáo khoa và bài viết) một cách chính xác Ngôn ngữ Python. Tại sao?

    1. Nó rất dễ học
    2. Một số lượng lớn các thư viện làm sẵn
    3. Khi nhìn vào một chương trình, bạn sẽ thấy ngay thuật toán mà nó thực hiện
    4. Hầu hết các chuyên gia về machine learning đều sử dụng Python và hầu hết các thư viện cũng được tạo riêng cho ngôn ngữ lập trình này

    Ở phần trước, chúng ta đã học cách tính toán sự thay đổi tín hiệu khi truyền qua mạng nơ-ron. Chúng ta đã làm quen với ma trận, tích của chúng và rút ra các công thức tính toán đơn giản.

    Ở phần 6 của bản dịch mình đăng 4 phần của cuốn sách cùng một lúc. Tất cả đều được dành riêng cho một trong những chủ đề quan trọng trong lĩnh vực mạng lưới thần kinh - phương pháp lan truyền ngược. Bạn sẽ học cách tính lỗi của tất cả các nơ-ron trong mạng nơ-ron chỉ dựa trên lỗi cuối cùng của mạng và trọng số của các kết nối.

    Tài liệu rất phức tạp, vì vậy hãy thoải mái đặt câu hỏi trên diễn đàn.

    Bạn có thể chuyển.

    Thích đọc sách!

    Ở Phần 5 của bản dịch tôi trình bày 3 phần liên quan đến ý nghĩa.

    Đầu tiên, chúng ta sẽ tự mình tính toán kết quả đầu ra của mạng nơ-ron hai lớp. Sau đó chúng ta sẽ làm quen với ma trận và tích của chúng. Sử dụng kiến ​​thức thu được, chúng ta sẽ rút ra các công thức đơn giản để tính toán chuyển đổi tín hiệu trong mạng nơ-ron. Và trong phần cuối cùng, chúng ta sẽ kiểm tra các công thức thu được trong thực tế, tính toán kết quả đầu ra của mạng nơ-ron ba lớp.

    Bạn có thể chuyển.

    Thích đọc sách!

    Phần 4 của bản dịch đã sẵn sàng!

    Chúng ta hãy ngừng vòng vo mà chuyển thẳng sang chủ đề của cuốn sách - mạng lưới thần kinh.

    Trong phần dịch này, chúng ta sẽ xem xét các mạng lưới thần kinh sinh học và so sánh chúng với các máy tính truyền thống. Sau đó chúng ta sẽ xây dựng mô hình nơ-ron nhân tạo và cuối cùng chúng ta sẽ chuyển thẳng sang mạng lưới thần kinh nhân tạo.

    Bạn có thể chuyển.

    Thích đọc sách!

    Phần thứ ba của bản dịch!

    Bài viết không dài lắm. Nó chỉ bao gồm một phần của cuốn sách. Mục đích là để chỉ ra rằng mỗi phương pháp đều có những hạn chế. Bài viết thảo luận về những hạn chế của phân loại tuyến tính. Các khái niệm cũng được giới thiệu hàm logic và các vấn đề XOR.

    Bạn có thể chuyển.

    Thích đọc sách!

    Trong bài viết này tôi sẽ nói về một trình tạo nhạc thú vị hoạt động trên mạng lưới thần kinh. Máy phát điện được gọi là Amper. Với sự trợ giúp của nó, bất kỳ người nào, ngay cả những người không sáng tác các tác phẩm, đều có thể độc lập tạo ra một giai điệu độc đáo và sử dụng nó cho mục đích riêng của mình.

    Ví dụ, đây là những gì mạng lưới thần kinh đã phát triển cho tôi.

    Trong lịch sử, mạng lưới thần kinh nhân tạo, trong lịch sử hơn nửa thế kỷ của chúng, đã trải qua cả hai giai đoạn phát triển nhanh chóng và ngày càng được công chúng chú ý, cũng như các giai đoạn hoài nghi và thờ ơ theo sau chúng. TRONG Thời gian tốt Các nhà khoa học và kỹ sư có vẻ như cuối cùng họ đã tìm ra một công nghệ phổ quát có thể thay thế con người trong bất kỳ nhiệm vụ nhận thức nào. Giống như nấm sau mưa, nhiều mô hình mạng lưới thần kinh mới đang xuất hiện và các cuộc tranh luận gay gắt đang diễn ra giữa các tác giả của chúng, các nhà toán học chuyên nghiệp, về mức độ sinh học nhiều hay ít của các mô hình mà họ đề xuất. Các nhà sinh học chuyên nghiệp quan sát các cuộc thảo luận này từ bên lề, định kỳ phân tích và kêu lên “Đúng, điều này không xảy ra trong tự nhiên!” – và không có nhiều tác dụng, vì các nhà toán học mạng lưới thần kinh, như một quy luật, chỉ lắng nghe các nhà sinh học khi sự thật của các nhà sinh học phù hợp với lý thuyết của chính họ. Tuy nhiên, theo thời gian, một nhóm nhiệm vụ dần dần tích tụ mà mạng lưới thần kinh hoạt động kém hiệu quả và sự nhiệt tình của mọi người nguội dần.

    Ngày nay, mạng lưới thần kinh đã trở lại đỉnh cao danh tiếng nhờ phát minh ra phương pháp đào tạo trước không giám sát dựa trên Máy Bolzmann bị hạn chế (RBM), cho phép đào tạo mạng lưới thần kinh sâu (tức là với quy mô cực lớn, trên thứ tự hàng chục nghìn, số lượng tế bào thần kinh) và sự thành công của mạng lưới thần kinh sâu trong các vấn đề thực tế về nhận dạng giọng nói và hình ảnh. Ví dụ: nhận dạng giọng nói trong Android được triển khai bằng mạng nơ-ron sâu. Điều này sẽ kéo dài bao lâu và mạng lưới thần kinh sâu sẽ đáp ứng những kỳ vọng đặt vào chúng tốt đến mức nào vẫn chưa rõ.
    Trong khi đó, song song với tất cả các tranh chấp, trào lưu và xu hướng khoa học, rõ ràng cộng đồng người dùng mạng thần kinh nổi bật - những kỹ sư phần mềm thực hành quan tâm đến khía cạnh ứng dụng của mạng thần kinh, khả năng học hỏi từ dữ liệu thu thập được và giải quyết các vấn đề nhận dạng. Với nhiều vấn đề thực tế Phân loại và dự đoán hoạt động tốt với các mô hình Perceptron đa lớp (MLP) tương đối nhỏ và được thiết kế tốt và các mạng Chức năng cơ sở xuyên tâm (RBF). Những mạng lưới thần kinh này đã được mô tả nhiều lần; tôi muốn giới thiệu những cuốn sách sau đây để bày tỏ thiện cảm của cá nhân tôi đối với chúng: Osovsky, Bishop, Khaikin; Ngoài ra còn có các khóa học hay về Coursera và các tài nguyên tương tự.

    Tuy nhiên, liên quan đến cách tiếp cận chung Việc sử dụng mạng lưới thần kinh trong thực tế về cơ bản khác với cách tiếp cận phát triển xác định thông thường “được lập trình, nó hoạt động, có nghĩa là nó luôn hoạt động”. Mạng lưới thần kinh về bản chất là các mô hình xác suất và cách tiếp cận chúng phải hoàn toàn khác nhau. Thật không may, nhiều lập trình viên mới của công nghệ máy học nói chung và mạng lưới thần kinh nói riêng lại làm như vậy. lỗi hệ thống khi làm việc với họ, họ trở nên thất vọng và bỏ rơi vấn đề. Ý tưởng viết chuyên luận này về Habr nảy sinh sau khi giao tiếp với những người dùng mạng thần kinh thất vọng như vậy - những lập trình viên xuất sắc, giàu kinh nghiệm, tự tin.

    Đây là danh sách các quy tắc của tôi và những lỗi điển hình việc sử dụng mạng lưới thần kinh.

    1. Nếu có thể không sử dụng mạng nơ-ron thì đừng sử dụng chúng.
    Mạng lưới thần kinh cho phép bạn giải quyết vấn đề nếu không thể đề xuất thuật toán bằng cách xem dữ liệu bằng mắt nhiều lần (hoặc rất nhiều lần). Ví dụ: nếu có nhiều dữ liệu thì dữ liệu đó sẽ phi tuyến, nhiễu và/hoặc có kích thước lớn.

    2. Độ phức tạp của mạng nơ-ron phải phù hợp với độ phức tạp của nhiệm vụ.
    Hiện đại những máy tính cá nhân(ví dụ: Core i5, RAM 8 GB) cho phép bạn huấn luyện mạng thần kinh trong thời gian thoải mái bằng cách sử dụng mẫu của hàng chục nghìn ví dụ, với kích thước dữ liệu đầu vào lên tới hàng trăm. Các mẫu lớn là một thách thức đối với các mạng lưới thần kinh sâu được đề cập ở trên, vốn được đào tạo trên GPU đa bộ xử lý. Những mô hình này rất thú vị nhưng nằm ngoài trọng tâm của bài viết habr này.

    3. Dữ liệu đào tạo phải mang tính đại diện.
    Mẫu đào tạo phải thể hiện đầy đủ và toàn diện hiện tượng được mô tả và bao gồm nhiều tình huống có thể xảy ra. Thật tốt khi có nhiều dữ liệu, nhưng bản thân điều đó không phải lúc nào cũng hữu ích. Có một trò đùa phổ biến trong giới hạn hẹp khi một nhà địa chất đến gặp một người nhận dạng, đặt một mảnh khoáng chất trước mặt anh ta và yêu cầu anh ta phát triển một hệ thống để nhận biết một chất như vậy khi sử dụng nó. “Tôi có thể lấy thêm ví dụ về dữ liệu không?” - người nhận dạng hỏi. "Chắc chắn!" - nhà địa chất trả lời, lấy ra một cái cuốc và chia mảnh khoáng chất của mình thành nhiều mảnh nữa. Như bạn hiểu, thao tác như vậy sẽ không có tác dụng gì - không thông tin mới một mẫu tăng lên như vậy không mang theo bên trong nó.

    4. Trộn vùng chọn.
    Sau khi thu thập xong các vectơ dữ liệu đầu vào và đầu ra, nếu các phép đo độc lập với nhau thì thay đổi thứ tự của các vectơ ngẫu nhiên. Điều này rất quan trọng để phân chia chính xác mẫu thành Đào tạo/Kiểm tra/Xác thực và tất cả các phương pháp đào tạo theo từng mẫu.

    5. Chuẩn hóa và căn giữa dữ liệu.
    Đối với perceptron nhiều lớp và nhiều mô hình khác, giá trị dữ liệu đầu vào phải nằm trong khoảng [-1;1]. Trước khi đưa chúng vào mạng thần kinh, hãy trừ giá trị trung bình khỏi dữ liệu và chia tất cả các giá trị cho giá trị tối đa.

    6. Chia mẫu thành Đào tạo, Kiểm tra và Xác nhận.
    Sai lầm chính của người mới bắt đầu là cung cấp lỗi tối thiểu mạng lưới thần kinh hoạt động trên một mẫu huấn luyện, đồng thời huấn luyện lại nó một cách kinh khủng và sau đó mong muốn có được chất lượng tốt tương tự trên dữ liệu thực mới. Điều này đặc biệt dễ thực hiện nếu có ít dữ liệu (hoặc tất cả chúng đều từ một phần). Kết quả có thể rất đáng thất vọng: mạng lưới thần kinh sẽ thích ứng với mẫu nhiều nhất có thể và sẽ mất chức năng trên dữ liệu thực. Để kiểm soát khả năng khái quát hóa mô hình của bạn, hãy chia tất cả dữ liệu thành ba mẫu theo tỷ lệ 70:20:10. Train on Train, kiểm tra định kỳ chất lượng của mô hình trong Test. Để đánh giá khách quan cuối cùng – Xác nhận.
    Kỹ thuật xác thực chéo, khi Đào tạo và Kiểm tra được tạo ngẫu nhiên nhiều lần từ cùng một dữ liệu, có thể xảo quyệt và gây ấn tượng sai về chất lượng tốt vận hành hệ thống - ví dụ: nếu dữ liệu được lấy từ nguồn khác nhau và điều này rất quan trọng. Sử dụng xác thực chính xác!

    7. Áp dụng chính quy hóa.
    Chính quy hóa là một kỹ thuật cho phép bạn tránh đào tạo quá mức mạng lưới thần kinh trong quá trình đào tạo, ngay cả khi có ít dữ liệu. Nếu bạn tìm thấy hộp kiểm có từ này, hãy nhớ kiểm tra nó. Dấu hiệu của một mạng lưới thần kinh được đào tạo quá mức – giá trị lớn có trọng lượng lên tới hàng trăm và hàng nghìn, mạng lưới thần kinh như vậy sẽ không hoạt động bình thường trên dữ liệu mới, chưa từng thấy trước đây

    8. Không cần phải đào tạo lại mạng lưới thần kinh trực tuyến.
    Bản thân ý tưởng đào tạo lại mạng lưới thần kinh vĩnh viễn đối với dữ liệu mới đến là đúng; Chúng tôi học hỏi mỗi ngày và hiếm khi phát điên. Tuy nhiên, đối với các mạng thần kinh nhân tạo thông thường ở giai đoạn phát triển kỹ thuật hiện nay, cách làm này có nhiều rủi ro: mạng có thể bị quá tải hoặc thích ứng với dữ liệu mới nhất nhận được - và mất khả năng khái quát hóa. Để sử dụng hệ thống trong thực tế, mạng nơ-ron cần: 1) huấn luyện, 2) kiểm tra chất lượng trên các mẫu thử nghiệm và xác nhận, 3) chọn tùy chọn mạng thành công, cố định trọng số của nó và 4) sử dụng mạng nơ-ron đã được huấn luyện mạng trong thực tế, trọng số trong quá trình không thay đổi cách sử dụng.

    9. Sử dụng các thuật toán học tập mới: Levenberg-Marquardt, BFGS, Conjugate Gradents, v.v.
    Tôi tin tưởng sâu sắc rằng việc thực hiện học lan truyền ngược là nghĩa vụ thiêng liêng của tất cả những người làm việc với mạng lưới thần kinh. Phương pháp này là đơn giản nhất, tương đối dễ lập trình và cho phép bạn nghiên cứu tốt quá trình học của mạng lưới thần kinh. Trong khi đó, lan truyền ngược được phát minh vào đầu những năm 70 và trở nên phổ biến vào giữa những năm 80 của thế kỷ trước, kể từ đó, các phương pháp tiên tiến hơn xuất hiện có thể cải thiện đáng kể chất lượng học tập. Tốt hơn nên sử dụng chúng.

    10. Huấn luyện mạng lưới thần kinh trong MATLAB và các môi trường thân thiện với người dùng tương tự.
    Nếu bạn không phải là một nhà khoa học đang phát triển các phương pháp mới để đào tạo mạng lưới thần kinh mà là một lập trình viên thực hành, tôi không khuyên bạn nên tự mình viết mã quy trình đào tạo mạng lưới thần kinh. Có một số lượng lớn gói phần mềm, chủ yếu bằng MATLAB và Python, cho phép bạn huấn luyện mạng lưới thần kinh, đồng thời kiểm soát quá trình huấn luyện và kiểm tra bằng cách sử dụng phương tiện tiện lợi trực quan hóa và gỡ lỗi. Hãy tận hưởng di sản của nhân loại! Cá nhân tôi thích cách tiếp cận “đào tạo MATLAB với một thư viện tốt - thực hiện mô hình được đào tạo bằng tay”; nó khá mạnh mẽ và linh hoạt. Một ngoại lệ là gói STATISTICA, chứa các phương pháp nâng cao để huấn luyện mạng nơron và cho phép bạn tạo chúng ở dạng Mã chương trình bằng C, thuận tiện cho việc thực hiện.

    Trong bài viết tiếp theo, tôi dự định mô tả chi tiết toàn bộ chu trình công nghiệp trong việc chuẩn bị một mạng lưới thần kinh được triển khai trên cơ sở các nguyên tắc được mô tả ở trên, được sử dụng cho các nhiệm vụ nhận dạng trong thương mại. sản phẩm phần mềm.

    Chúc may mắn!

    Văn học

    Hinton G., Deng L., Yu D., Dahl G., Mohamed A., Jaitly N., Senior A., ​​​​Vanhoucke V., Nguyen P., Sainath T. và Kingsbury B. Mạng lưới thần kinh sâu cho âm thanh Mô hình hóa trong nhận dạng giọng nói, Tạp chí xử lý tín hiệu IEEE, Tập. 29, không. 6, 2012, tr. 82 – 97.
    Ciresan D., Meier U., Masci J và Schmidhuber J. Mạng lưới thần kinh sâu nhiều cột để phân loại biển báo giao thông. Mạng lưới thần kinh, Tập. 34, tháng 8 năm 2012, tr. 333 – 338
    S. Osovsky. Mạng lưới thần kinh để xử lý thông tin - trans. từ tiếng Ba Lan. M.: Tài chính và Thống kê, 2002. – 344 tr.
    Giám mục C.M. Nhận dạng mẫu và học máy. Springer, 2006 – 738 tr.
    S. Khaikin. Mạng lưới thần kinh: khóa học đầy đủ. Williams, 2006.