Нейронные сети и глубокое обучение: будущее рядом. Нейронные сети с глубинным обучением

Помощь 12.06.2019
Помощь

Что такое глубокое обучение (deep learning) ? March 3rd, 2016

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


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

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

Давайте посмотрим на примере задачи распознавания изображений: раньше как — запихивали в обычную нейронную сеть с одним слоем огромную (1024×768 — около 800 000 числовых значений) картинку и смотрели как компьютер медленно умирает, задыхаясь от нехватки памяти и неспособности понять, какие пиксели важны для распознавания, а какие нет. Не говоря уже об эффективности такого способа. Вот архитектура такой обычной (неглубой) нейронной сети.

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

В 2006 году сразу несколько независимых исследователей решили эту проблему (к тому же аппаратные мощности развились уже достаточно, появились достаточно мощные видеокарты). Эти исследователи: Джеффри Хинтон (и его коллега Руслан Салахутидинов) с техникой предварительного обучения каждого слоя нейросети ограниченной машиной Больцмана (простите меня за эти термины...), Ян Лекун с сверточными нейронными сетями и Йошуая Бенджио с каскадными автокодировщиками. Первые два сразу же были рекрутированы Google и Facebook, соответственно. Вот две лекции: одна — Хинтона , другая — Лякуна , в которых они и рассказывают, что такое глубокое обучение. Лучше их об этом не расскажет никто. Ещё одна классная лекция Шмидхубера про развитие глубокого обучения, тоже одного из столпов этой науки. А у Хинтона ещё есть прекрасный курс на курсере по нейронкам.

На что способны глубокие нейронные сети сейчас? Они способны распознавать и описывать объекты, можно сказать «понимают» что это. Речь идет о распознавании смыслов.

Просто посмотрите это видео распознавания того, что видит камера, в реальном времени.

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

Если совсем просто, то сверточные сети — это такие сети, где основным структурным элементом обучения является группа (сочетание) нейронов (обычно квадрат 3×3,10×10 и т.д.), а не один. И на каждом уровне сети обучаются десятки таких групп. Сеть находит такие сочетания нейронов, которые максимизируют информацию об изображении. На первом уровне сеть извлекает самые базовые, структурно простые элементы картинки — можно сказать, строительные единицы: границы, штрихи, отрезки, контрасты. Повыше — уже устойчивые комбинации элементов первого уровня, и так далее вверх по цепочке. Хочу ещё раз отдельно подчеркнуть главную особенность глубокого обучения: сети сами формируют эти элементы и решают, какие из них более важный, а какие — нет. Это важно, так как в области машинного обучения, создание признаков — является ключевым и сейчас мы переходим на этап, когда компьютер сам учится создавать и отбирать признаки. Машина сама выделяет иерархию информативных признаков.

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


На втором уровне — это уже будет элемент из элементов первого уровня. На третьем — из второго. Надо понимать, что данная картинка — просто демонстрация. Сейчас в промышленной применение, такие сети имеют от 10 до 30 слоев (уровней).

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

Подробнее про сверточные сети —

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

03.05.2017 Дмитрий Ильвовский, Екатерина Черняк

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

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

Первые работы по глубинному обучению (deep learning) относятся к середине XX века. В начале 1940-х годов Уоррен Маккаллок и Уолтер Питтс предложили формальную модель человеческого мозга - искусственную нейронную сеть, а чуть позже Фрэнк Розенблатт обобщил их работы и создал модель нейронной сети на компьютере. Первые работы по обучению нейронных сетей с использованием алгоритма обратного распространения ошибки относятся к 1960-м годам (алгоритм вычисляет ошибку предсказания и минимизирует ее с помощью методов стохастической оптимизации). Однако оказалось, что, несмотря на красоту и изящество идеи имитации мозга, обучение «традиционных» нейронных сетей занимает много времени, а результаты классификации на небольших наборах данных сопоставимы с результатами, полученными более простыми методами, например машинами опорных векторов (Support Vector Machine, SVM). В итоге нейронные сети были на 40 лет забыты, но сегодня снова стали востребованы при работе с большими объемами неструктурированных данных, изображений и текстов.

С формальной точки зрения нейронная сеть представляет собой направленный граф заданной архитектуры, вершины или узлы которого называются нейронами . На первом уровне графа находятся входные узлы, на последнем - выходные узлы, число которых зависит от задачи. Например, для классификации на два класса на выходной уровень сети можно поместить один или два нейрона, для классификации на k классов - k нейронов. Все остальные уровни в графе нейронной сети принято называть скрытыми слоями. Все нейроны, находящиеся на одном уровне, связаны ребрами со всеми нейронами следующего уровня, каждое ребро обладает весом. Каждому нейрону ставится в соответствие функция активации, моделирующая работу биологических нейронов: они «молчат», когда входной сигнал слаб, а когда его значение превышает некий порог, срабатывают и передают входное значение дальше по сети. Задача обучения нейронной сети на примерах (то есть на парах «объект - правильный ответ») заключается в поиске весов ребер, наилучшим образом предсказывающих правильные ответы. Ясно, что именно архитектура - топология строения графа нейронной сети - является ее важнейшим параметром. Хотя формального определения для «глубинных сетей» пока нет, принято считать глубинными все нейронные сети, состоящие из большого числа слоев или имеющие «нестандартные» слои (например, содержащие только избранные связи или использующие рекурсию с другими слоями).

Примером наиболее успешного применения нейронных сетей пока является анализ изображений, однако нейросетевые технологии коренным образом изменили и работу с текстовыми данными. Если раньше каждый элемент текста (буква, слово или предложение) нужно было описывать с помощью множества признаков различной природы (морфологических, синтаксических, семантических и т. д.), то теперь во многих задачах необходимость в сложных описаниях пропадает. Теоретики и практики нейросетевых технологий часто говорят об «обучении представлению» (representation learning) - в сыром тексте, разбитом только на слова и предложения, нейронная сеть способна найти зависимости и закономерности и самостоятельно составить признаковое пространство. К сожалению, в таком пространстве человек ничего не поймет - во время обучения нейронная сеть ставит каждому элементу текста в соответствие один плотный вектор, состоящих из неких чисел, представляющих обнаруженные «глубинные» взаимосвязи. Акцент при работе с текстом смещается от конструирования подмножества признаков и поиска внешних баз знаний к выбору источников данных и разметке текстов для последующего обучения нейронной сети, для которого требуется существенно больше данных по сравнению со стандартными методами. Именно из-за необходимости использовать большие объемы данных и из-за слабой интерпретируемости и непредсказуемости нейронные сети не востребованы в реальных приложениях промышленного масштаба, в отличие от других, хорошо зарекомендовавших себя алгоритмов обучения, таких как случайный лес и машины опорных векторов. Тем не менее нейронные сети используются в целом ряде задач автоматической обработки текстов (рис. 1).

Одно из самых популярных применений нейронных сетей - построение векторов слов, относящихся к области дистрибутивной семантики: считается, что значение слова можно понять по значению его контекста, по окружающим словам. Действительно, если нам незнакомо какое-то слово в тексте на известном языке, то в большинстве случаев можно угадать его значение. Математической моделью значения слова служат вектора слов: строки в большой матрице «слово-контекст», построенной по достаточно большому корпусу текстов. В качестве «контекстов» для конкретного слова могут выступать соседние слова, слова, входящие с данным в одну синтаксическую или семантическую конструкцию, и т. д. В клетках такой матрицы могут быть записаны частоты (сколько раз слово встретилось в данном контексте), но чаще используют коэффициент положительной попарной взаимной информации (Positive Pointwise Mutual Information, PPMI), показывающий, насколько неслучайным было появление слова в том или ином контексте. Такие матрицы вполне успешно могут быть использованы для кластеризации слов или для поиска слов, близких по смыслу к искомому слову.

В 2013 году Томаш Миколов опубликовал работу , в которой предлагал использовать нейронные сети для обучения векторам слов, но для меньшей размерности: по кортежам (слово, контексты) обучалась нейронная сеть простейшей архитектуры, на выходе каждому слову в соответствие ставился вектор из 300 элементов. Оказалось, что такие вектора лучше передают семантическую близость слов. Например, на них можно определить арифметические операции сложения и вычитания смыслов и получить следующие уравнения: «Париж – Франция + Россия = Москва»; «король – мужчина + женщина = королева». Или найти лишнее слово в ряду «яблоко, груша, вишня, котенок». В работе были представлены две архитектуры, skip-gram и CBOW (Continuous Bag of Words), под общим названием word2vec. Как позже было показано в , word2vec - это не что иное, как факторизация матрицы «слово-контекст» с весами PPMI. Сейчас принято относить word2vec к дистрибутивной семантике, а не к глубинному обучению , однако исходным толчком для создания этой модели послужило применение нейронной сети. Кроме того, оказалось, что вектора word2vec служат удобным представлением смысла слова, которое можно подавать на вход глубинным нейронным сетям, используемым для классификации текстов.

Задача классификации текстов - одна из самых актуальных для маркетологов, особенно когда речь идет об анализе мнений или отношения потребителя к какому-то товару или услуге, поэтому исследователи постоянно работают над повышением качества ее решения. Однако анализ мнений является задачей классификации скорее предложений, а не текстов - в положительном отзыве пользователь может написать одно-два отрицательно окрашенных предложения, и их тоже важно уметь определять и анализировать. Известная трудность в классификации предложений заключается в переменной длине входа - поскольку предложения в текстах бывают произвольной длины, непонятно, как подать их на вход нейронной сети. Один из подходов заимствован из области анализа изображений и заключается в использовании сверточных нейронных сетей (convolutional neural network, CNN) (рис. 2).

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

Классификация последовательностей - это задачи, в которых каждому слову нужно поставить в соответствие одну метку: морфологический разбор (каждому слову ставится в соответствие часть речи), извлечение именованных сущностей (определение того, является ли каждое слово частью имени человека, географического названия и пр.) и т. д. При классификации последовательностей используются методы, позволяющие учитывать контекст слова: если предыдущее слово - часть имени человека, то текущее тоже может быть частью имени, но вряд ли будет частью названия организации. Реализовать это требование на практике помогают рекуррентные нейронные сети, расширяющие идею языковых моделей (language model), предложенных в конце прошлого века. Классическая языковая модель предсказывает вероятность того, что слово i встретится после слова i-1. Языковые модели можно использовать и для предсказания следующего слова: какое слово с наибольшей вероятностью встретится после данного?

Для обучения языковых моделей нужны большие корпусы - чем больше обучающий корпус, тем больше пар слов модель «знает». Использование нейронных сетей для разработки языковых моделей позволяет сократить объем хранимых данных. Представим себе простую архитектуру сети, в которой на вход поступают слова i-2 и i-1, а на выходе нейронная сеть предсказывает слово i. В зависимости от числа скрытых слоев и количества нейронов на них, обученная сеть может быть сохранена как некоторое количество плотных матриц относительно небольшой размерности. Иначе говоря, вместо обучающего корпуса и всех пар слов в нем можно хранить лишь несколько матриц и список уникальных слов. Однако такая нейронная языковая модель не позволяет учитывать длинные связи между словами. Эту проблему решают рекуррентные нейронные сети (рис. 3), в которых внутреннее состояние скрытого слоя не только обновляется после того, как на вход приходит новое слово, но и передается на следующий шаг. Таким образом, скрытый слой рекуррентной сети принимает входы двух типов: состояние скрытого слоя на предыдущем шаге и новое слово. Если рекуррентная нейронная сеть обрабатывает предложение, то скрытые состояния позволяют запоминать и передавать длинные связи в предложениях. Экспериментально неоднократно было проверено, что рекуррентные нейронные сети запоминают род субъекта в предложении и выбирают правильные местоимения (она - ее, он - его) при генерации предложения, однако показать в явном виде, как именно такого рода информация хранится в нейронной сети или как она используется, до сих пор не удалось.

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

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

Кроме сверточных нейронных сетей, для анализа текстов применяются так называемые автокодировщики, используемые, например, для создания эффектов на изображениях в Photoshop или Instagram и нашедшие применение в лингвистике в задаче снижения размерности (поиск проекции вектора, представляющего текст, на пространство заведомо меньшей размерности). Проекция на двумерное пространство делает возможным представление текста в виде точки на плоскости и позволяет наглядно изобразить коллекцию текстов как множество точек, то есть служит средством предварительного анализа перед кластеризацией или классификацией текстов. В отличие от задачи классификации, в задаче снижения размерности нет четких критериев качества, однако изображения, получаемые при использовании автокодировщиков, выглядят достаточно «убедительно». С математической точки зрения автокодировщик - это нейронная сеть без учителя, которая обучается линейной функции f(x) = x и состоит из двух частей: кодировщика и декодировщика. Кодировщик - это сеть с несколькими скрытыми слоями с уменьшающимся количеством нейронов. Декодировщик - аналогичная сеть с увеличивающимся количеством нейронов. Их соединяет скрытый слой, на котором столько нейронов, сколько должно быть размерностей в новом пространстве меньшей размерности, и именно он отвечает за снижение размерности. Как и сверточные нейронные сети, автокодировщик не имеет никакой лингвистической интерпретации, поэтому может считаться скорее инженерным, чем аналитическим инструментом.

Несмотря на впечатляющие результаты, нейронная сеть не может считаться самостоятельным инструментом для анализа текста (поиска закономерностей в языке) и тем более для понимания текста. Да, нейронные сети позволяют находить скрытые связи между словами и обнаруживать закономерности в текстах, но пока эти связи не представлены в интерпретируемом виде, нейронные сети будут оставаться достаточно тривиальными инструментами машинного обучения. Кроме того, в промышленных аналитических решениях глубинное обучение пока еще не востребовано, поскольку требует неоправданных затрат на подготовку данных при непредсказуемости результатов. Даже в исследовательском сообществе высказывается критическое отношение к попыткам сделать нейронные сети универсальным инструментом. В 2015 году Крис Маннинг, глава группы компьютерной лингвистики в Стэнфорде и президент ACL, четко очертил круг применимости нейронных сетей . В него он включил задачи классификации текстов, классификации последовательностей и снижения размерности. Однако благодаря маркетингу и популяризации глубинного обучения возросло внимание собственно к компьютерной лингвистике и ее новым приложениям.

Литература

  1. Tomas Mikolov et. al. Efficient Estimation of Word Representations in Vector Space, arxiv.org. URL: http://arxiv.org/pdf/1301.3781.pdf
  2. Levy Omer, Yoav Goldberg, Ido Dagan. Improving distributional similarity with lessons learned from word embeddings. Transactions of the Association for Computational Linguistics 3. - 2015. - P. 211–225. URL: https://www.transacl.org/ojs/index.php/tacl/article/view/570/124 (дата обращения: 18.05.2017).
  3. Павел Велихов. Машинное обучение для понимания естественного языка // Открытые Системы.СУБД. - 2016. - № 1. - С.18–21. URL: (дата обращения: 18.05.2017).
  4. Christopher Manning. Computational linguistics and deep learning. Computational Linguistics. - 2016. URL: http://www.mitpressjournals.org/doi/full/10.1162/COLI_a_00239#.WQH8MBhh2qA (дата обращения: 18.05.2017).

Дмитрий Ильвовский ([email protected]) - сотрудник Международной лаборатории интеллектуальных систем и структурного анализа, Екатерина Черняк ([email protected]) - преподаватель центра непрерывного образования, факультет компьютерных наук, НИУ ВШЭ (Москва). Работа выполнена в рамках Программы фундаментальных исследований НИУ ВШЭ.



Разработанный под эгидой DARPA робот не справился с дверью. Источник: IEEE Spectrum / DARPA .

Судя по всему, искусственный интеллект становится неотъемлемой частью индустрии высоких технологий. Мы постоянно слышим о том, как искусственный интеллект научился отвечать на письма в почтовом клиенте Gmail , учится и сортировать отпускные фотографии . Марк Цукерберг приступил к созданию искусственного интеллекта, который будет помогать нам управляться по дому. Проблема заключается в том, что само понятие «искусственного интеллекта» способствует завышенным ожиданиям. Людям проще представить мощные суперкомпьютеры, которые помогают нашим космическим кораблям бороздить просторы Вселенной, чем эффективные спам-фильтры. Кроме того, людям свойственно обсуждать подробности и прогнозировать сроки гибели обречённого человечества от лап бездушного искусственного разума.

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

Итак, что же стоит за терминами «нейронная сеть», «машинное обучение» и «глубокое обучение»?

Эти три словосочетания у всех на слуху. Давайте рассмотрим их послойно - для упрощения восприятия. Нейронные сети находятся в самом основании этой пирамиды. Они представляют собой особый тип компьютерной архитектуры, которая необходима для создания искусственного интеллекта. Следующий уровень - это машинное обучение, которое выступает в роли программного обеспечения для нейронных сетей. Оно позволяет выстроить процесс обучения таким образом, чтобы машина искала нужные ответы в гигантских массивах данных. Пирамиду венчает глубокое обучение , особый тип машинного обучения, обретший невероятную популярность за последнее десятилетие, - во многом благодаря двум новым возможностям: резко подешевевшей вычислительной мощности и безграничным информационным просторам, также известным как Интернет.

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

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

КОМПЬЮТЕРАМ ВЫ ПРОСТО ГОВОРИТЕ, ЧТО НУЖНО СДЕЛАТЬ. С ПОМОЩЬЮ МАШИННОГО ОБУЧЕНИЯ ВЫ ПОКАЗЫВАЕТЕ, КАК ИМЕННО ЭТО НУЖНО СДЕЛАТЬ

«Допустим, вы хотите объяснить компьютеру, как перейти дорогу, - рассуждает Эрнест Дэвис (Ernest Davis), профессор Нью-Йоркского университета. - С помощью традиционного программирования вы сможете задать ему точный набор правил, который будет определять его поведение: заставит смотреть по сторонам, пропускать машины, переходить по пешеходному переходу… и просто наблюдать за результатом. В случае с машинным обучением вы демонстрируете системе 10 000 видеороликов, в которых пешеходы переходят через дорогу. После этого ей нужно показать ещё 10 000 видео столкновений машин с пешеходами, а затем просто позволить системе заняться своим делом».

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

Глубокое обучение оказалось одним из наиболее практичных методов современного машинного обучения. Данный подход использует значительное количество слоёв нейронной сети для анализа данных на различных уровнях абстракции. Таким образом, при демонстрации картинки системе нейронных сетей с глубоким обучением, каждый слой сети будет занят анализом изображения при разном увеличении. Нижний слой будет анализировать пиксельные сетки размером всего 5 × 5 пикселей, и выдавать два ответа - «да» или «нет» - в зависимости от типа объекта, который появляется на данной сетке. Если нижний слой отвечает утвердительно, тогда вышерасположенный слой нейронной сети анализирует, насколько данная сетка встраивается в шаблон большего размера. Является ли данное изображение началом прямой линии или углом? Постепенно этот процесс усложняется, позволяя программному обеспечению понять и обработать самые сложные данные, расчленив их на составные части.

«Чем выше мы продвигаемся вверх по слоям нейронной сети, тем более масштабные вещи она способна определять, - поясняет руководитель лаборатории искусственного интеллекта в компании Facebook , Ян Лекун (Yann LeCun). - Они становятся более абстрактными. На уровне самого верхнего слоя расположены датчики, способные определить тип изучаемого объекта: человек, собака, планер и так далее».

ДЛЯ УСПЕШНОЙ РАБОТЫ НЕЙРОННОЙ СИСТЕМЫ С ГЛУБОКИМ ОБУЧЕНИЕМ ТРЕБУЕТСЯ БОЛЬШОЙ ОБЪЁМ ДАННЫХ И ЗНАЧИТЕЛЬНОЕ КОЛИЧЕСТВО ВРЕМЕНИ

А теперь давайте представим, что мы хотим с помощью глубокого обучения . Сперва необходимо запрограммировать различные слои нейронной сети таким образом, чтобы она научилась самостоятельно различать элементы котика: когти, лапы, усы, и т. д. Каждый слой будет выполнен на предыдущем слое, который позволит ему распознать конкретный элемент, именно поэтому процесс и получил название «глубокое обучение». Затем нам необходимо демонстрировать нейронной сети большое количество изображений котиков и других животных и называть их. «Это котик», - объясним мы компьютеру при демонстрации соответствующего изображения. - Это тоже котик. А вот это - уже не совсем котик». По мере того, как нейронная сеть будет просматривать изображения, в ней начнут срабатывать определённые слои и группы узлов, которые помогут ей определить и выделить категории когтей, лап, усов и прочих атрибутов котика. Постепенно нейронная сеть запоминает, какие из этих слоёв представляют наибольшее значение, и усиливает нужные связи, а слабые связи попросту игнорирует. К примеру, система способна обнаружить значительную корреляцию между категориями «лапы» и «котики», но поскольку лапы бывают не только у котиков, нейронная сеть будет стремиться находить сочетание категорий «лапы» и «усы».

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

Изображение, созданное проектом Deep Dream компании Google , стало своеобразной визитной карточкой, собирательным образом, представляющим исследования искусственного интеллекта для широкой общественности.

Так это то самое, чем воспользовались Google , Facebook и прочие?

По большей части, да.

Технологии глубокого обучения применяются для решения множества повседневных задач. Крупные информационно-технологические компании уже давно обзавелись собственными подразделениями для исследования искусственного интеллекта. Google и Facebook объединили усилия, чтобы популяризировать эти исследования и своего программного обеспечения. Компания Google недавно запустила бесплатные трёхмесячные онлайн-курсы по изучению искусственного интеллекта. И пока научная деятельность исследователей пребывает в относительной безвестности, корпорации буквально штампуют новаторские приложения, основанные на этой технологии: начиная веб-приложением компании Microsoft , способным , и заканчивая сюрреалистическими изображениями Deep Dream . Ещё одна причина популярности технологии глубокого обучения кроется в том, что большие клиентоориентированные компании всё активнее включаются в её разработку и периодически выбрасывают на рынок наиболее странные наработки.

ИНТЕЛЛЕКТ И ЗДРАВЫЙ СМЫСЛ - ЭТО РАЗНЫЕ ВЕЩИ?

Несмотря на то, что технологии глубокого обучения уверенно справляются с задачами по распознаванию речи и изображений и обладают значительным коммерческим потенциалом, для них есть немалое число ограничений. Они требуют ввода большого количества данных и точной настройки оборудования. Проблема заключается в том, что их «интеллект» узкоспециализирован и весьма неустойчив. Как тонко подметил когнитивный психолог Гэри Маркус (Gary Marcus) в своей статье в журнале New Yorker , современные методы использования популярных технологий «славятся отсутствием причинно-следственных связей (как в случае между болезнью и симптомами) и, вероятнее всего, будут сталкиваться с определёнными трудностями при попытках анализа абстрактных понятий, например «родственный» или «идентичный». Пока этим технологиям не доступны логические умозаключения, им предстоит многому научиться, чтобы дойти до интеграции абстрактных знаний: ведь недостаточно получить сведения об объекте, важно понять его назначение и способы его применения».

Иными словами, технологиям глубокого обучения не хватает здравого смысла.

Изображение гантелей, дополненное фантомными конечностями, которое было сгенерировано с помощью нейронных сетей Google . Источник: Google .

Например, в исследовательском проекте Google перед нейронной сетью была поставлена задача сгенерировать изображение гантели после обучения на схожих примерах. Нейронная сеть довольно неплохо справилась с этой задачей: на созданных ею картинках были изображены два серых круга, соединённых горизонтальной трубой. Но посередине каждого снаряда были дорисованы очертания мускулистой руки бодибилдера. Исследователи предположили, что причина этого кроется в том, что системе демонстрировались изображения спортсменов, которые держали гантель. Технология глубокого обучения способна запомнить общие визуальные признаки нескольких десятков тысяч снарядов, но сама система никогда не сможет совершить когнитивный рывок и понять, что у гантелей нет рук. Список проблем не ограничивается здравым смыслом. Ввиду особенностей восприятия и способов изучения данных, нейронные сети с технологией глубокого обучения могут быть сбиты с толку случайными комбинациями пикселей . Мы видим лишь помехи на изображении, но компьютер уверен на 95 %, что перед ним изображение гепарда.

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

Знаменитый учёный в области искусственного интеллекта Гектор Левеск (Hector Levesque) уверен, что подобное «несерьёзное поведение» лишний раз подчёркивает пропасть восприятия между искусственным интеллектом и живым мозгом. Левеск утверждает, что его коллеги забыли о слове «интеллект» в термине «искусственный интеллект» и призывает вспомнить знаменитый тест Тьюринга . Гектор всякий раз подчёркивает, что машины в ходе этого теста прибегают к различного рода ухищрениям и прикладывают все усилия, чтобы одурачить собеседника. Боты охотно пользуются шутками, цитатами; они способы изображать бурные всплески эмоций и прибегать к всевозможным словесным выпадам для того, чтобы сбить с толку и отвлечь человека, ведущего опрос. И действительно, машина, которая, по мнению некоторых изданий, успешно прошла тест Тьюринга, . Эта «легенда» была выбрана создателями бота для того, чтобы оправдать его невежество, неуклюжие формулировки и стремление к нелогичным выводам.

Левеск предлагает исследователям в области искусственного интеллекта другой тип теста, который, по его мнению, должен состоять из опроса с отвлечёнными, сюрреалистическими вопросами. Эти вопросы будут логическими, но предполагают наличие обширных фоновых знаний, которые описывает Маркус (Marcus). Гектор предлагает задавать ботам простые вопросы: «Сможет ли крокодил пробежать стометровку с препятствиями?» или «Разрешается ли бейсболистам приклеивать маленькие крылья на кепки?» Представьте, какими знаниями нужно обладать компьютеру, чтобы ответить на подобные вопросы?

Итак, что же такое «настоящий» искусственный интеллект?

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

Компьютерный специалист Ларри Теслер (Larry Tesler) сформулировал это следующим образом: «Интеллектом можно назвать всё, что угодно, пока до этого не добрались машины» . И даже в случае решения задач, которые недоступны человеку, машины не пытаются воспроизвести человеческий интеллект.

«Метафора о сходстве нейронной сети и головного мозга не совсем корректна, - отмечает Ян Лекун (Yann LeCun). - Она неверна в той же степени, как и утверждение о том, что самолёт похож на птицу. Он не машет крыльями, у него нет перьев и мускулов».

«Даже если нам удастся создать искусственный интеллект, - отмечает учёный, - он не будет похож на разум человека или сознание животного. К примеру, нам будет очень сложно представить разумное существо, которое не обладает [стремлением к] самосохранению».

Большинство исследователей, работающих в области искусственного интеллекта, попросту игнорируют идею о том, что нам никогда не удастся создать по-настоящему живой, наделённый чувствами искусственный интеллект. «На данный момент отсутствует научный подход, который позволит искусственному интеллекту выйти за рамки запрограммированных установок и стать по-настоящему гибким при решении нескольких задач, - рассуждает профессор Массачусетского технологического института Андрей Барбу (Andrei Barbu), возглавляющий центр исследований Center for Brains, Minds and Machines (CBMM). - Следует понимать, что исследования искусственного интеллекта сейчас находятся на этапе создания систем, которые будут решать конкретные, узкоспециальные проблемы».

Профессор отмечает, что ранее предпринимались попытки неконтролируемого обучения, в ходе которых система должна обрабатывать неразмеченные данные, однако подобные исследования пока находятся в зачаточном состоянии. Более известным примером служит нейронная сеть компании Google , в которую были загружены 10 миллионов случайных эскизов с видеосервиса YouTube . В результате нейронная сеть сама поняла, как выглядят котики, но её создатели не сочли это умение чем-то выдающимся.

Как заявил Ян Лекун на прошлогоднем хакатоне Orange Institute: «Пока мы не знаем, как наладить процесс неконтролируемого обучения. Это является основной проблемой».

Яркая демонстрация силы искусственного интеллекта. Сеть Watson компании IBM выигрывает в телевизионной игре-викторине Jeopardy! Однако эти впечатляющие возможности имеют весьма ограниченное применение.

Вже майже 3 роки ІТ Академія допомагає хмельничанам робити перші кроки у сфері ІТ і будувати кар’єру маркетолога, програміста, тестувальника, проектного менеджера, менеджера з продажу, ейчара, веб-дизайнера. За цей час ми випустили 240 студентів, 40 з них працюють у ІТ-компаніях, ще 8 використовують здобуті знання, працюючи на фрілансі.

Доброго всем времени суток уважаемые коллеги iOS-ники, наверняка каждый из вас работал с сетью и занимался парсингом данных c JSON. Для этого процесса есть куча библиотек, всевозможных инструментов которые можно юзать. Некоторые из них сложные, а некоторые простые. Я и сам очень долго если чесно парсил JSON руками, не доверяя этот процес каким-то сторонним библиотекам и в этом были свои плюсы.

9 сентября 2014 года в ходе очередной презентации, компания Apple представила собственную систему мобильных платежей — Apple Pay.

С помощью платежной системы Apple Pay пользователи iPhone 6 и iPhone 6+, а также владельцы новейших версий Apple Watch могут совершать покупки онлайн, пользоваться дополнительными преимуществами apple pay для мобильных приложений и совершать платежи при помощи технологии NFC (Near Field Communication). Для авторизации платежей используются технологии Touch ID или Face ID.

Технологии не стоят на месте, и процессы разработки движутся вместе с ними. Если раньше компании работали по модели «Waterfall», то сейчас, например, все стремятся внедрить «Scrum». Эволюция происходит и в сфере предоставления услуг по разработке программного обеспечения. Раньше компании предоставляли клиентам качественную разработку в рамках бюджета, останавливаясь на этом, сейчас же они стремятся обеспечить максимальную пользу для клиента и его бизнеса, предоставляя свою экспертизу.

За последние несколько лет появилось столько хороших шрифтов, в том числе бесплатных, что мы решили написать продолжение нашей для дизайнеров.

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

Как часто проджект менеджеры оказываются между молотом и наковальней, когда пытаются найти баланс между всеми требованиями и сроками заказчика и ментальным здоровьем всей команды? Сколько нюансов нужно учесть, чтобы по обе стороны ответственности был мир и порядок? Как понять хороший ты менеджер или тебе срочно стоит подтягиваться по всем фронтам? Как определить, в каких аспектах именно ты, как ПМ, отстаешь, а где ты молодец и умничка? Именно об этом была очередная конференция Code’n’Coffee.

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

Грядущая революция умных роботов предсказывалась каждые десять лет начиная с 1950-х годов. Тем не менее, она так и не произошла. Прогресс в области искусственного интеллекта происходил неуверенно, порою скучно, неся многим энтузиастам разочарование. Видимые успехи - компьютер Deep Blue, созданный в середине 1990-х IBM и обыгравший в 1997 году Гарри Каспарова в шахматы, или появление в конце 1990-х электронного переводчика - были скорее результатом «грубых» расчетов, чем переносом механизмов человеческого восприятия на процессы компьютерных вычислений.

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

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

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

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

Замечательным примером использования нейронных сетей с глубинным обучением является распознавание одинаковых объектов, сфотографированных под разными углами или в разных позах (если речь идет о человеке или о животном). Алгоритмы, использующие попиксельное сканирование, «думают» что перед ними два разных изображения, тогда как «умные» нейронные сети «понимают», что перед ними тот же самый объект. И наоборот - изображения двух собак разных пород, сфотографированных в одинаковой позе, прежними алгоритмами могли восприниматься как фотографии одной и той же собаки. Нейронные сети с глубинным обучением могут выявить такие детали изображений, которые помогут им различить животных.

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



Рекомендуем почитать

Наверх