Re: Бустинг для чайников
От: alex_public  
Дата: 12.08.18 15:49
Оценка: +1
Здравствуйте, Khimik, Вы писали:

K>Оказывается кроме нейросетей есть ещё одна парадигма ИИ, не менее серьёзная – ансамбли.


Возможно у меня не совсем верное мнение на этот счёт (точнее не совпадающее с нынешним марктетинговым хайпом), но лично я оцениваю и подобные нейронные сети и все остальные статистические методы не как область ИИ. На мой взгляд это всего лишь продвинутые методы апроксимации многомерных функций, в которых подбор множества параметров апроксимации под конкретную задачу почему-то назвали процессом обучения. Хотя никакого реального обучения (в классическом ИИ понимании) там нет — просто заранее готовится набор параметров по тренировочным данным.

Но я не настаиваю на таком понимание — это лично моё мнение. Согласно ему вот в той статье, на которую ты ссылаешься, машинное обучение должно быть не вложенным в ИИ множеством, а пересекающимся с ним. А то иначе какой-нибудь компилятор C++ с PGO тоже становится ИИ... Ну да ладно, это всё вопрос терминологии.

K>Я всё хотел написать нейросеть, которая будет распознавать буквы на рисунке. Может, проще вначале сделать этого на основе бустинга?


Нет, вот как раз распознавание картинок является единственной областью, где нейронные сети безусловно рулят в данный момент. Естественно не любые, а свёрточные. Именно из-за этого механизма (близкого к человеческому зрению) соответствующие нейронные сети могут видеть главные детали, не отвлекаясь на различия в пикселях.

K>Для бустинга нужно набрать побольше алгоритмов, кое-как решающих нужную задачу, и заставить их обучать друг друга. Какие это могут быть алгоритмы? Я в этой статье пока мало понял про промежуточные парадигмы между обычным программированием и ИИ (регрессия, кластеризация и т.д.).


Ты что-то напутал. Использование ансамбля разных алгоритмов — это стекинг (как и написано в статье по ссылке). А бустинг — это применение одного и того же простенького алгоритма на разных выборках из набора данных для обучения. Причём в отличие от бэггинга (в котором тоже один алгоритм на множестве выборок) там берутся не случайные выборки, а специальная последовательность, позволяющая наращивать точность (итеративный градиентный спуск).

K>А может быть, проще самому написать примитивные алгоритмы? Скажем один – простое сопоставление рисунка и шаблона, второй – какой-нибудь топологический анализ и т.д. Далее я заставлю их друг друга обучать по принципу бустинга.

K>Или я не так понимаю суть ансамблей?

Нуу в принципе можно попробовать. Если у тебя будет неплохой тупой и быстрый алгоритм с чёткой функцией оценки, то можно применить к нему бустинг. Возможно даже придумаешь что-то новенькое, позволяющее обойти свёрточные нейронные сети. Но со всем этим имеет смысл возиться, только если это у тебя основное занятие в жизни (ну или основное хобби). Потому что надо будет долго и сильно углубляться в детали (всё элементарное уже давно изучено). Если у тебя сейчас стоит какая-то практическая задача, то для всего кроме картинок лучше взять готовый популярный алгоритм типа такого http://scikit-learn.org/stable/modules/ensemble.html#gradient-boosting, а для картинок свёрточную нейронную сеть.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.