От "нейронных сетей" до "глубокого обучения" - новые прорывные методы программирования алгоритмов AI

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

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

Этот недавно доминирующий подход, первоначально известный как «нейронные сети», теперь называется «глубоким обучением (Deep learning)», чтобы подчеркнуть качественный прогресс в отношении нейронных сетей прошлого. Его недавний успех часто объясняется наличием более крупных наборов данных и более мощными вычислительными системами или заинтересованностью крупных технологических компаний в этой области. 

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

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

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

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

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

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

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

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

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

Подробно, фото1, фото2, фото3

образованиетехнологииaiнаука
25%
14
16
56.448 GOLOS
0
В избранное
Константин
Наука, технологии, AI, IoT, BigData, роботы, криптовалюты, программирование. Самое актуальное и интересное
16
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (0)
Сортировать по:
Сначала старые