Случайный лес
Чтобы разобраться, что такое случайный лес в машинном обучении, представь обычный лес.
Хотя нет... чтобы было интереснее, пусть это будет не обычный лес, а Запретный лес из Гарри Поттера. И давай поместим в этот лес Гарри, Гермиону, Рона и Невилла.
Гуляя по лесу, встречают друзья зверюшку и им нужно определить, кто это такой (задача классификации). Каждый из волшебников обладает своими навыками и пытается угадать:
- Рон разглядывает ответ в хрустальном шаре
- Гарри читает заклинания
- Гермиона пытается вспомнить, в какой книге могла его видеть
- а Невилл просто говорит случайные названия, поэтому его никто не слушает =)
После того, как каждый определился с ответом, друзья голосуют и выбирают ответ по большинству. Друзья случайные ответы Невилла не учитывают, чтобы не сбиваться.
А теперь, что такое случайный лес?
Это набор моделей (наш Гарри, Рон, Гермиона и Невилл), каждая из которых пытается ответить на поставленный вопрос.
Каждая модель работает по своим алгоритмам. Точность каждой модели может быть невысокой (как и в нашей истории). Но совместные предсказания и выбор ответа голосованием повышают точность итогового ответа.
Но важно в случайный лес помещать только те модели, которые угадывают больше, чем в половине случаев. Иначе такие модели итоговый ответ могут портить.
Рекуррентная нейронная сеть
Если бы рекуррентная нейронная сеть стала человеком, она была превратилась в школьника, которому задали выучить четверостишие.
В отличие от обычной нейронной сети, наш школьник видит в тексте не просто набор каких-то слов, а связанную последовательность.
Школьник учит текст слово за словом, по-очереди (поэтому и рекуррентная), запоминая, что после "лукоморья" идет "дуб зеленый", а если встретится "злотая цепь", то на ум сразу прийдет "на дубе том". Это и выделяет рекуррентную сеть на фоне остальных - она обладает памятью.
А еще рекуррентная сеть могла бы стать золотой рыбкой, которая хорошо помнит только последние 3 секунды жизни. Дойдя до конца произведения Пушкина, она смогла бы воспроизвести уверенно только последние четверостишия. С каждой новой информацией, рекуррентная сеть хуже помнит то, что было в начале.
Рекуррентные нейронные сети справляются с задачами анализа текста, распознавания речи (перевод аудио-записи в текст), а также прогнозирования следующего слова на основе предыдущего. Именно способность обрабатывать связанные элементы (буквы в словах, звуки в речи и т.д.) помогает решать эти задачи.
Что такое дата-сет? Это набор данных, благодаря которому "машина" может чему-либо научиться.
Представь, что "машина" - это ребенок, которого родители хотят научить отличать жирафа от зайца, а кенгуру от леопарда.
Такого ребенка мама поведет в зоопарк и покажет животных, объясняя кто это. И для ребенка животные в зоопарке будут дата-сетом.
Или папа покажет малышу книжку с рисунками животных. А когда ребенок будет листать страницы, услышит от папы "это зебра, а это леопард". И это тоже дата-сет. Папа даже может рассказать, что "зебра - это полосатая лошадка", и тогда признаки, по которым можно отличить зебру, в машинном обучении мы назвали бы фичами.
А теперь представь, что малыш вырос, пошел в школу и изучает основные события Второй мировой войны. Тогда таблица в книжке с основными датами и событиями - это тоже дата-сет, на котором наш ребенок учится.
Сверточная нейронная сеть
Сверточную сеть можно представить как команду в викторине, которой нужно угадать, что изображено на картине: кошка, собака или, например, Мона Лиза.
Допустим на изображении кот.
Игра напоминает глухой телефон, только интереснее:
1. Участники выстраиваются по-очереди. Каждый из них называется слоем свертки.
2. Первый слой свертки видит исходную картину. И его задача: перерисовать изображение на разные карточки. Но рисовать самого кота нельзя: можно на карточках изображать только контуры, дуги и ребра.
3. Второй участник (новый слой нейронной сети) уже не видит саму картину, но ему передают всё, что нарисовал первый. Его задача уже заключается в том, что по этим картинкам нужно нарисовать на новых карточках, комбинируя разные признаки, уже более сложные текстуры: окружности, квадраты и т.д.
3. Третьему слою передают теперь уже карточки с предыдущего этапа, и из всех этих фигур и квадратов ему нужно будет нарисовать на новых карточках более сложные вещи: на этом этапе где-то можно будет опознать что-то похожее на ухо кота или его хвост =)
4. И уже через несколько этапов, появляется большая коробка с карточками (они называются картами признаков). На них уже могут быть изображены лапы, усы или крылья (если это птица). Все эти карточки передают последнему участнику - эксперту, который внимательно изучает рисунки, сравнивает их со своей картотекой (шаблоны лап кота, крыльев, листьев и т.д.) а затем выносит вердикт: "Это же кот!".
Также устроена сверточная нейронная сеть (хотя и слоев в ней и различных комбинаций может быть гораздо больше). Человек, при классификации объектов, мыслит шаблонами, только делает это не задумываясь, потому что так научился. Также происходит и работа сверточной нейронной сети, когда она получает набор карт признаков и сравнивает их с шаблонами (что должно быть у кошки и может ли быть у этой кошки клюв).
А для того, чтобы собрать нейронной сети эти шаблоны, с которыми будут сравниваться все изображения, ей нужно показать множество разных изображений: как кошек, так и не кошек и объяснить, что есть что. А нейронная сеть - очень умная, после сотен примеров она уже сама догадается =)