Нейронные сети для чайников
Все слышали, но мало кто понимает, как они работают.
Сфер применения нейронных сетей очень много и на специализированных сайтах типа Kaggle.com большие корпорации даже размещают конкурсы среди разработчиков всего мира, чтобы они предлагали решения их сложных задач за порядочное вознаграждение.
Так как рассказывать про нейронные сети можно только на примере, то я расскажу вам как они используются в распознавании образов. Простыми словами — как нейронные сети могут понять по фотографии, кто на ней изображен. Кролик или же самолет.
Но для начала нужно понимать, что компьютер — это всего лишь большой калькулятор. Никакого магического сознания и искусственного интеллекта по сути не существует. Есть только невероятная способность компьютера выполнять миллионы простых операций в секунду. По типу поменять 0 на 1 или наоборот.
Все что умеет делать компьютер, он умеет благодаря тому, что ученые придумали способ подачи компьютеру последовательности команд, так чтобы сами поглощаемые команды потом выполняли другие команды. Алан Тьюринг с его знаменитой машиной Тьюринга, вот кто один из первых оживил таким образом обычную счетную машинку до уровня более-менее современного компьютера.
Теперь возвращаемся к распознаванию образов. Любую картинку можно разделить на множество мелких деталей. Минимальное возможное деление — это пиксель, точка. Картинка состоит из набора точек, как паззл. Ученые придумали как можно все эти точки загружать в очень большую функцию с очень большим количеством входных параметров.
Если говорить обо всем известной формуле 2×2 = 4, то тут мы имеем на входе два параметра 2 и 2, а на выходе 4. Просто, конечно! Это известно каждому дошкольнику.
Так вот, нейронная сеть умеет на вход принимать 2×2x2.....x2 (в среднем на одну картинку получаем 1 миллион параметров). Затем компьютер начинает внутри функции все это перемножать и сравнивать.
Конечно, ученые и тут подумали, и поняли несколько принципов, по которым можно это перемножение оптимизировать. Например, пиксели, расположенные рядом у разных кроликов в разных ракурсах, давали примерно похожие результаты и по этим похожим результатам компьютер составляет определенную запись у себя в базе данных. Если на эту запись взглянет человек и при этом посмотрит на группу пикселей, то можно увидеть ухо кролика в разных ракурсах.
Вот такие перемножения и результаты делаются с абсолютно каждой деталью. Колесо автомобиля, руль велосипеда, крыло птицы — все эти детали компьютер может запомнить по уникальному значению результата перемножений пикселей.
Формулы перемножения, конечно, сложнее чем простое 2×2, но, по сути, то они остаются обычном математической операцией.
Затем ученые собирают миллионы картинок по всему интернету и кропотливо скармливают эти картинки нейронным сетям. При этом указывают что изображено на картинке самолет или слон.
В итоге такого обучения составляются большие базы данных с готовыми суммами. Эти базы данных выкладываются в общем доступе.
Теперь любой программист может скачать эту базу данных с обученной нейронной сетью. Загрузить любую картинку на вход программы. И нейронная сеть в этой программе, просто загрузит картинку и выполнить перемножение и сравнит с тем, что есть в этой большой базе данных. На выходе мы получаем ответ — «на картинке слон».
Возвращаясь к более практичному применению. Девушки очень любят всякие ушки себе цеплять на селфи или снимая видео. Вот эти самые няшные ушки и носики являются результатом работы нейронной сети. Такая сеть обучена на лицах людей и на них она может определить, где у вас лоб и нос, как бы вы не вертелись перед камерой. И в месте лба и носа они вам добавляют картинки нужной модели ушек и пятачков.