Введение в машинное обучение

Компьютеры. Исключительные устройства, не правда ли? Кто бы мог подумать, что простая сборка пластиковых и силиконовых компонентов может творить ошеломляющие вещи. Будь то вождение автомобиля, полет на самолете, анализ спутниковых снимков или даже обследование пациентов - они могут все!

С момента изобретения компьютеров каждый исследователь мечтал сделать их умными и интеллектуальными. А почему бы и нет, разве не было бы круто, если бы компьютер подсказывал, что надеть на первое свидание? Или во время разговора придумывает остроумные ответы? Или подскажет, о чем стоит поговорить со свиданием?

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

Итак, что же такое машинное обучение?

Насколько я понимаю, это явление, которое позволяет компьютерам давать точные результаты или принимать мудрые решения самостоятельно, не требуя явного программирования для этого.

Вам может быть интересно, как они это делают, поскольку они делают крутые вещи, не будучи жестко запрограммированными для этого. Используемая концепция довольно проста. Вместо того, чтобы кормить компьютеры программами, их кормят множеством примеров.

Набор этих примеров называется «обучающим набором». Используя примеры из обучающего набора, компьютеры настраивают определенные параметры, также называемые «весами», чтобы уменьшить ошибку в выходных данных. Эта процедура доступа к каждому примеру из обучающего набора и соответствующей корректировки весов выполняется для всех примеров, присутствующих в обучающем наборе.

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

Так работает большинство алгоритмов машинного обучения. В течение периода обучения они работают над минимизацией ошибок в системе, а во время периода тестирования они используют накопленную базу знаний для решения данной проблемы. В зависимости от характера этих алгоритмов их можно разделить на 2 типа.

а. Алгоритмы контролируемого обучения

Чтобы понять этот тип алгоритмов, прочтите этот небольшой рассказ. Представьте себя студентом, который действительно плохо разбирается в математике. Итак, чтобы научиться лучше, вы каждый день ходите к своему профессору математики, который знает ответы на все математические задачи в вашем учебнике.

После того, как вы решите любую проблему, профессор проверит ваш окончательный ответ и скажет, правильный он или неправильный. Если вы ошиблись, вы попросите решить проблему. Приняв решение, убедитесь, что вы больше не повторяете ту же ошибку. Это улучшает вашу способность решать проблемы. В результате вы сможете решать математические задачи, не относящиеся к вашему учебнику и ответы на которые также не известны вашему профессору.

Вот как работают алгоритмы контролируемого обучения: во время периода обучения для каждого входа из обучающего набора они вычисляют разницу между ожидаемым выходом и тем, который они производят. Затем они пытаются минимизировать эту разницу, регулируя веса. Это позволяет им обрабатывать входные данные, которые не принадлежат их обучающей выборке.

б. Алгоритмы неконтролируемого обучения

В случае алгоритмов неконтролируемого обучения супервизор, который сообщает алгоритму об ожидаемом выходе для любого заданного входа, отсутствует. Алгоритм учится сам. С входным набором можно выполнять любые операции. После просмотра входных данных он может идентифицировать особые закономерности, делать определенные выводы или даже делать различные прогнозы.

Приведенный выше GIF демонстрирует хороший пример обучения без учителя, когда бот учится самостоятельно и приходит к выводу.

Поскольку это вводный пост в блоге, я не буду рассказывать вам больше теоретических материалов, вместо этого мы сделаем забавную вещь.

Вы когда-нибудь думали о том, чтобы соревноваться с программами искусственного интеллекта? Что ж, я думал об этом и сделал это тоже. И для конкурса я выбрала то, что у меня действительно хорошо получается. Раскраска! Мне очень нравится раскрашивать вещи, и я почти уверен, что многим из вас это тоже нравится. Итак, я решил испытать движок раскраски AI, а затем сравнил наши результаты. Вот как прошли соревнования.

Me vs. AI

Так что правила этого конкурса были довольно простыми. Мы должны были заполнить изображение цветами. И это было не обычное изображение, это было изображение в оттенках серого (или, как многие называют, «черно-белое»). И победителем должен был стать тот, чья цветная копия изображения в оттенках серого выглядела более реалистично для человеческого глаза.

Посмотрите сами на результат.

Ну что сказать, хоть попробовал.

Удивительно, но движки AI действительно хороши в этом. Фактически, эта небольшая игра, в которую я играл против движка ИИ, известна как «раскрашивание изображений в градациях серого», и в настоящее время она стала настоящей горячей темой для исследований в области глубокого обучения.

Эти движки требуют обучения на большом количестве изображений в градациях серого, при этом соответствующие цветные версии этих изображений являются ожидаемыми выходными данными. Как только они будут должным образом обучены, они смогут даже раскрашивать древние фотографии в оттенках серого. Это действительно здорово, учитывая тот факт, что они делают определенные вещи, которые практически невозможны для людей.

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

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

В следующем посте мы поговорим об основных концепциях машинного обучения, с помощью которых мы создадим шахматный движок на основе искусственного интеллекта. Так что не забудьте проверить это, когда оно выйдет.

Если у вас есть какие-либо вопросы, вы можете указать их в разделе ответов ниже. Если вам понравился этот пост, вы можете поделиться им и подписаться на мою публикацию, чтобы получать уведомления, когда я что-то публикую.