Новый метод распознавания значительно ускорил работу нейросетей
Разработан метод, который ускорит распознавание образов нейросетями
Работа представлена на страницах Information Sciences.
Нейросети могут различать на видео людей и животных. Их искусственные нейроны обучаются, запоминая внешний вид объекта на изображении. Обычно исследователи обучают нейросеть на открытой базе фотографий, как ImageNet или Places. Для ускорения процесса алгоритм настраивают либо перебирать только часть эталонных изображений, либо использовать лишь малое число признаков. Однако, когда на фото изображены предметы разных классов и для каждого класса есть только несколько образцов для обучения, возникают сложности.
Исследователь из Высшей школы экономики разработал сеть, которая быстро распознает образы без потерь в точности. Метод получил название метода последовательных тернарных решений (sequential three-way decisions). При таком подходе нейросеть делит изображения на простые — на которых объекты легко различимы — и сложные — на которых объекты различаются плохо и требуют более детального рассмотрения.
«Каждое фото описывается тысячами характерных признаков. Сравнивать все признаки входного изображения со всеми признаками обучающего примера не имеет смысла. Сравнивая все со всем, большая часть образцов будет не похожа на анализируемую картинку. Поэтому новый метод сравнивает только несколько самых важных признаков за раз. На следующем шаге количество признаков вновь увеличивается и процесс повторяется», — отметил Савченко.
Подход уменьшает время распознавания в 1,5-10 раз по сравнению с принятыми сейчас: обычными классификаторами и известными многоклассовыми последовательными тернарными решениями. Низкая стоимость позволит применять разработку на мобильных устройствах и других гаджетах.
Наука
Новости науки
Российские физики разработали новый способ распознавания образов нейронной сетью
Физики из Петрозаводского государственного университета предложили новый метод запоминания и распознавания образов в импульсной нейронной сети. Его применение позволит выполнять сложные логические и когнитивные задачи при помощи устройств малого размера с небольшим количеством нейронов. Исследование, выполненное при поддержке РНФ, опубликовано в журнале Electronics.
Искусственные нейронные сети, используемые в решении задач машинного обучения, строятся по тем же принципам, что и сети нервных клеток в живом организме. Запоминание и распознавание информации происходит за счет передачи сигналов между отдельными нейронами системы. Обычно нейронные сети реализуются программно, но могут состоять и из физических устройств, среди которых наиболее распространены осцилляторные, то есть колебательные. Показатели каждого нейрона в них, например, электрическое сопротивление, ритмически меняются.
Модельными объектами в новом исследовании стали сети из нескольких нейронов-осцилляторов на базе электрических переключателей из диоксида ванадия. Характеристики этих устройств меняются под воздействием температуры, что позволяет управлять системой. Через подложку, на которой находятся переключатели, распространяется тепло. Каждый нейрон под его воздействием генерирует собственные импульсы, и следующий переключатель, получая сигнал, переходит из открытого состояния в закрытое или наоборот. Этот термический тип связи между нейронами – запатентованная разработка авторов исследования.
Переключения каждого нейрона происходят на определенной частоте, и со временем частоты разных осцилляторов синхронизируются. Состояние системы, при котором это происходит, называется синхронным, и каждое такое состояние может быть использовано для обучения сети. Для этого информацию переводят в векторную форму. Объекты для запоминания описывают по нескольким признакам: размеру, форме, массе, компонентам цвета, скорости движения и т. д. Со значением каждого признака сопоставляются координаты вектора. Например, если описывать объекты по их цветам в модели RGB (Red, Green, Blue), то вектору с координатами (150, 31, 200) будет соответствовать один конкретный цвет – между фиолетовым и лиловым. Каждый вектор соответствует параметрам системы в одном из синхронных состояний. При обучении нейронная сеть запоминает несколько различных векторов. И если после обучения при вводе тестового вектора система возвращается к наиболее близкому из ранее запомненных синхронных состояний, происходит распознавание.
Основой для метода стала обнаруженная физиками частичная синхронизация системы, или синхронизация на субгармониках. Выяснилось, что колебания разных нейронов в сети синхронизируются не только на основной частоте, но и на частотах, равных ее кратным долям. Если учитывать эти субгармоники, частотная область синхронизации значительно расширяется, а число возможных синхронных состояний многократно возрастает. Удалось смоделировать достижение 260 состояний синхронизации для системы из двух осцилляторов и 650 – из трех. Каждое из них потенциально может быть использовано для запоминания и распознавания информации.
Увеличение числа синхронных состояний за счет субгармоник называется эффектом синхронизации высокого порядка. Каждый нейрон при этом имеет несколько синхронных состояний. Так, осцилляторная сеть даже из малого количества составляющих может выполнять сложные операции, к примеру распознавать речь, изображения и видео, а также решать задачи прогнозирования, оптимизации и управления.
«В ряде наших исследований начата разработка методик обучения подобных нейронных сетей и показана их реальная работа в качестве устройств распознавания образов, – отмечает ведущий научный сотрудник Петрозаводского государственного университета Андрей Величко. – В перспективе на основе этих сетей могут быть созданы компактные нейросетевые чипы с наноразмерными осцилляторами. Хотя в своих исследованиях мы использовали только один модельный объект, термически связанные осцилляторы на основе диоксида ванадия, разработанный метод является достаточно общим. Закономерности, которые мы выявили, фундаментальны и могут применяться в исследованиях осцилляторных сетей с различными механизмами и топологией связей нейронов. Мы надеемся на сотрудничество с другими российскими и зарубежными научными группами».
Как работает нейронная сеть: алгоритмы, обучение, функции активации и потери
Нейронная сеть — попытка с помощью математических моделей воспроизвести работу человеческого мозга для создания машин, обладающих искусственным интеллектом.
Искусственная нейронная сеть обычно обучается с учителем. Это означает наличие обучающего набора (датасета), который содержит примеры с истинными значениями: тегами, классами, показателями.
Неразмеченные наборы также используют для обучения нейронных сетей, но мы не будем здесь это рассматривать.
Например, если вы хотите создать нейросеть для оценки тональности текста, датасетом будет список предложений с соответствующими каждому эмоциональными оценками. Тональность текста определяют признаки (слова, фразы, структура предложения), которые придают негативную или позитивную окраску. Веса признаков в итоговой оценке тональности текста (позитивный, негативный, нейтральный) зависят от математической функции, которая вычисляется во время обучения нейронной сети.
Раньше люди генерировали признаки вручную. Чем больше признаков и точнее подобраны веса, тем точнее ответ. Нейронная сеть автоматизировала этот процесс.
Искусственная нейронная сеть состоит из трех компонентов:
- Входной слой;
- Скрытые (вычислительные) слои;
- Выходной слой.
Обучение нейросетей происходит в два этапа:
- Прямое распространение ошибки;
- Обратное распространение ошибки.
Во время прямого распространения ошибки делается предсказание ответа. При обратном распространении ошибка между фактическим ответом и предсказанным минимизируется.
Прямое распространение ошибки
Зададим начальные веса случайным образом:
Умножим входные данные на веса для формирования скрытого слоя:
- h1 = (x1 * w1) + (x2 * w1)
- h2 = (x1 * w2) + (x2 * w2)
- h3 = (x1 * w3) + (x2 * w3)
Выходные данные из скрытого слоя передается через нелинейную функцию (функцию активации), для получения выхода сети:
Обратное распространение
- Суммарная ошибка (total_error) вычисляется как разность между ожидаемым значением «y» (из обучающего набора) и полученным значением «y_» (посчитанное на этапе прямого распространения ошибки), проходящих через функцию потерь (cost function).
- Частная производная ошибки вычисляется по каждому весу (эти частные дифференциалы отражают вклад каждого веса в общую ошибку (total_loss)).
- Затем эти дифференциалы умножаются на число, называемое скорость обучения или learning rate (η).
Полученный результат затем вычитается из соответствующих весов.
В результате получатся следующие обновленные веса:
- w1 = w1 — (η * ∂(err) / ∂(w1))
- w2 = w2 — (η * ∂(err) / ∂(w2))
- w3 = w3 — (η * ∂(err) / ∂(w3))
То, что мы предполагаем и инициализируем веса случайным образом, и они будут давать точные ответы, звучит не вполне обоснованно, тем не менее, работает хорошо.
Популярный мем о том, как Карлсон стал Data Science разработчиком
Если вы знакомы с рядами Тейлора, обратное распространение ошибки имеет такой же конечный результат. Только вместо бесконечного ряда мы пытаемся оптимизировать только его первый член.
Смещения – это веса, добавленные к скрытым слоям. Они тоже случайным образом инициализируются и обновляются так же, как скрытый слой. Роль скрытого слоя заключается в том, чтобы определить форму базовой функции в данных, в то время как роль смещения – сдвинуть найденную функцию в сторону так, чтобы она частично совпала с исходной функцией.
Частные производные
Частные производные можно вычислить, поэтому известно, какой был вклад в ошибку по каждому весу. Необходимость производных очевидна. Представьте нейронную сеть, пытающуюся найти оптимальную скорость беспилотного автомобиля. Eсли машина обнаружит, что она едет быстрее или медленнее требуемой скорости, нейронная сеть будет менять скорость, ускоряя или замедляя автомобиль. Что при этом ускоряется/замедляется? Производные скорости.
Разберем необходимость частных производных на примере.
Предположим, детей попросили бросить дротик в мишень, целясь в центр. Вот результаты:
Теперь, если мы найдем общую ошибку и просто вычтем ее из всех весов, мы обобщим ошибки, допущенные каждым. Итак, скажем, ребенок попал слишком низко, но мы просим всех детей стремиться попадать в цель, тогда это приведет к следующей картине:
Ошибка нескольких детей может уменьшиться, но общая ошибка все еще увеличивается.
Найдя частные производные, мы узнаем ошибки, соответствующие каждому весу в отдельности. Если выборочно исправить веса, можно получить следующее:
Гиперпараметры
Нейронная сеть используется для автоматизации отбора признаков, но некоторые параметры настраиваются вручную.
Скорость обучения (learning rate)
Скорость обучения является очень важным гиперпараметром. Если скорость обучения слишком мала, то даже после обучения нейронной сети в течение длительного времени она будет далека от оптимальных результатов. Результаты будут выглядеть примерно так:
С другой стороны, если скорость обучения слишком высока, то сеть очень быстро выдаст ответы. Получится следующее:
Функция активации (activation function)
Функция активации — это один из самых мощных инструментов, который влияет на силу, приписываемую нейронным сетям. Отчасти, она определяет, какие нейроны будут активированы, другими словами и какая информация будет передаваться последующим слоям.
Без функций активации глубокие сети теряют значительную часть своей способности к обучению. Нелинейность этих функций отвечает за повышение степени свободы, что позволяет обобщать проблемы высокой размерности в более низких измерениях. Ниже приведены примеры распространенных функций активации:
Функция потери (loss function)
Функция потерь находится в центре нейронной сети. Она используется для расчета ошибки между реальными и полученными ответами. Наша глобальная цель — минимизировать эту ошибку. Таким образом, функция потерь эффективно приближает обучение нейронной сети к этой цели.
Функция потерь измеряет «насколько хороша» нейронная сеть в отношении данной обучающей выборки и ожидаемых ответов. Она также может зависеть от таких переменных, как веса и смещения.
Функция потерь одномерна и не является вектором, поскольку она оценивает, насколько хорошо нейронная сеть работает в целом.
Некоторые известные функции потерь:
- Квадратичная (среднеквадратичное отклонение);
- Кросс-энтропия;
- Экспоненциальная (AdaBoost);
- Расстояние Кульбака — Лейблера или прирост информации.
Cреднеквадратичное отклонение – самая простая фукция потерь и наиболее часто используемая. Она задается следующим образом:
Функция потерь в нейронной сети должна удовлетворять двум условиям:
- Функция потерь должна быть записана как среднее;
- Функция потерь не должна зависеть от каких-либо активационных значений нейронной сети, кроме значений, выдаваемых на выходе.
Глубокие нейронные сети
Глубокое обучение (deep learning) – это класс алгоритмов машинного обучения, которые учатся глубже (более абстрактно) понимать данные. Популярные алгоритмы нейронных сетей глубокого обучения представлены на схеме ниже.
Популярные алгоритмы нейронных сетей (http://www.asimovinstitute.org/neural-network-zoo)
Более формально в deep learning:
- Используется каскад (пайплайн, как последовательно передаваемый поток) из множества обрабатывающих слоев (нелинейных) для извлечения и преобразования признаков;
- Основывается на изучении признаков (представлении информации) в данных без обучения с учителем. Функции более высокого уровня (которые находятся в последних слоях) получаются из функций нижнего уровня (которые находятся в слоях начальных слоях);
- Изучает многоуровневые представления, которые соответствуют разным уровням абстракции; уровни образуют иерархию представления.
Пример
Рассмотрим однослойную нейронную сеть:
Здесь, обучается первый слой (зеленые нейроны), он просто передается на выход.
В то время как в случае двухслойной нейронной сети, независимо от того, как обучается зеленый скрытый слой, он затем передается на синий скрытый слой, где продолжает обучаться:
Следовательно, чем больше число скрытых слоев, тем больше возможности обучения сети.
Не следует путать с широкой нейронной сетью.
В этом случае большое число нейронов в одном слое не приводит к глубокому пониманию данных. Но это приводит к изучению большего числа признаков.
Изучая английскую грамматику, требуется знать огромное число понятий. В этом случае однослойная широкая нейронная сеть работает намного лучше, чем глубокая нейронная сеть, которая значительно меньше.
В случае изучения преобразования Фурье, ученик (нейронная сеть) должен быть глубоким, потому что не так много понятий, которые нужно знать, но каждое из них достаточно сложное и требует глубокого понимания.
Главное — баланс
Очень заманчиво использовать глубокие и широкие нейронные сети для каждой задачи. Но это может быть плохой идеей, потому что:
- Обе требуют значительно большего количества данных для обучения, чтобы достичь минимальной желаемой точности;
- Обе имеют экспоненциальную сложность;
- Слишком глубокая нейронная сеть попытается сломать фундаментальные представления, но при этом она будет делать ошибочные предположения и пытаться найти псевдо-зависимости, которые не существуют;
- Слишком широкая нейронная сеть будет пытаться найти больше признаков, чем есть. Таким образом, подобно предыдущей, она начнет делать неправильные предположения о данных.
Проклятье размерности
Проклятие размерности относится к различным явлениям, возникающим при анализе и организации данных в многомерных пространствах (часто с сотнями или тысячами измерений), и не встречается в ситуациях с низкой размерностью.
Грамматика английского языка имеет огромное количество аттрибутов, влияющих на нее. В машинном обучении мы должны представить их признаками в виде массива/матрицы конечной и существенно меньшей длины (чем количество существующих признаков). Для этого сети обобщают эти признаки. Это порождает две проблемы:
- Из-за неправильных предположений появляется смещение. Высокое смещение может привести к тому, что алгоритм пропустит существенную взаимосвязь между признаками и целевыми переменными. Это явление называют недообучение.
- От небольших отклонений в обучающем множестве из-за недостаточного изучения признаков увеличивается дисперсия. Высокая дисперсия ведет к переобучению, ошибки воспринимаются в качестве надежной информации.
Компромисс
На ранней стадии обучения смещение велико, потому что выход из сети далек от желаемого. А дисперсия очень мала, поскольку данные имеет пока малое влияние.
В конце обучения смещение невелико, потому что сеть выявила основную функцию в данных. Однако, если обучение слишком продолжительное, сеть также изучит шум, характерный для этого набора данных. Это приводит к большому разбросу результатов при тестировании на разных множествах, поскольку шум меняется от одного набора данных к другому.
алгоритмы с большим смещением обычно в основе более простых моделей, которые не склонны к переобучению, но могут недообучиться и не выявить важные закономерности или свойства признаков. Модели с маленьким смещением и большой дисперсией обычно более сложны с точки зрения их структуры, что позволяет им более точно представлять обучающий набор. Однако они могут отображать много шума из обучающего набора, что делает их прогнозы менее точными, несмотря на их дополнительную сложность.
Следовательно, как правило, невозможно иметь маленькое смещение и маленькую дисперсию одновременно.
Сейчас есть множество инструментов, с помощью которых можно легко создать сложные модели машинного обучения, переобучение занимает центральное место. Поскольку смещение появляется, когда сеть не получает достаточно информации. Но чем больше примеров, тем больше появляется вариантов зависимостей и изменчивостей в этих корреляциях.
Российские физики разработали новый способ распознавания образов нейронной сетью
Российские физики предложили новый метод запоминания и распознавания образов в импульсной нейронной сети. Он позволит выполнять сложные логические и когнитивные задачи при помощи устройств малого размера с небольшим количеством нейронов. Исследование, выполненное при поддержке гранта РНФ, опубликовано в журнале Electronics.
Искусственные нейронные сети, которые используются при решении задач машинного обучения, строятся по тем же принципам, что и сети нервных клеток в живом организме. Запоминание и распознавание информации в них происходит за счет передачи сигналов между отдельными нейронами системы. Обычно нейронные сети реализуются программно, но могут состоять и из физических устройств, среди которых наиболее распространены осцилляторные, то есть колебательные. В них ритмически меняются показатели каждого нейрона, например электрическое сопротивление.
В новом исследовании ученые в качестве модельных объектов использовали сети из нескольких нейронов-осцилляторов на базе электрических переключателей из диоксида ванадия. Характеристики этих устройств меняются под воздействием температуры, что позволяет управлять системой. Через подложку, на которой находятся переключатели, распространяется тепло. Каждый нейрон под его воздействием генерирует собственные импульсы, и следующий переключатель, получая сигнал, переходит из открытого состояния в закрытое или наоборот. Этот термический тип связи между нейронами — запатентованная разработка авторов исследования.
Переключения каждого нейрона происходят на определенной частоте, и со временем частоты разных осцилляторов синхронизируются. Состояние системы, при котором это происходит, называется синхронным, и каждое такое состояние может быть использовано для обучения сети. Для этого информацию переводят в векторную форму. Объекты для запоминания описывают по нескольким признакам: размеру, форме, массе, компонентам цвета, скорости движения и так далее. Со значением каждого признака сопоставляются координаты вектора. Например, если описывать объекты по их цветам в модели RGB (Red, Green, Blue), то вектору с координатами (150, 31, 200) будет соответствовать один конкретный цвет — между фиолетовым и лиловым. Каждый вектор соответствует параметрам системы в одном из синхронных состояний. При обучении нейронная сеть запоминает несколько различных векторов. И если после обучения при вводе тестового вектора система возвращается к наиболее близкому из ранее запомненных синхронных состояний, происходит распознавание.
Основой для метода стала обнаруженная физиками частичная синхронизация системы, или синхронизация на субгармониках. Выяснилось, что колебания разных нейронов в сети синхронизируются не только на основной частоте, но и на частотах, равных ее кратным долям. Если учитывать эти субгармоники, частотная область синхронизации значительно расширяется, а число возможных синхронных состояний многократно возрастает. Удалось смоделировать достижение 260 состояний синхронизации для системы из двух осцилляторов и 650 — из трех. Каждое из них потенциально может быть использовано для запоминания и распознавания информации.
Увеличение числа синхронных состояний за счет субгармоник называется эффектом синхронизации высокого порядка. Каждый нейрон при этом имеет несколько синхронных состояний. Так, осцилляторная сеть даже из малого количества составляющих может выполнять сложные операции, к примеру: распознавать речь, изображения и видео, решать задачи прогнозирования, оптимизации и управления.
«В ряде наших исследований начата разработка методик обучения подобных нейронных сетей и показана их реальная работа в качестве устройств распознавания образов, — отмечает ведущий научный сотрудник Петрозаводского государственного университета Андрей Величко. — В перспективе на основе этих сетей могут быть созданы компактные нейросетевые чипы с наноразмерными осцилляторами. Хотя в своих исследованиях мы использовали только один модельный объект, термически связанные осцилляторы на основе диоксида ванадия, разработанный метод является достаточно общим. Закономерности, которые мы выявили, фундаментальны и могут применяться в исследованиях осцилляторных сетей с различными механизмами и топологией связей нейронов. Мы надеемся на сотрудничество с другими российскими и зарубежными научными группами».
Перспективы нейронных сетей и глубокого машинного обучения в создании решений для здравоохранения Текст научной статьи по специальности « Информатика»
Аннотация научной статьи по информатике, автор научной работы — Гусев А.В.
В работе приведен обзор перспектив применения нейронных сетей и глубокого машинного обучения в создании систем искусственного интеллекта для здравоохранении . Приводится определение и пояснения по технологиям машинного обучения и нейронных сетей . Представлен обзор уже реализованных проектов применения искусственного интеллекта , а также дается прогноз наиболее перспективных, по мнению автора, направлений развития в ближайшее время.
Похожие темы научных работ по информатике , автор научной работы — Гусев А.В.,
Prospects for neural networks and deep machine learning in creating health solutions
The paper gives an overview of the prospects of using neural networks and deep machine learning in the creation of artificial intelligence systems for healthcare . The definition and explanations on the technologies of machine learning and neural networks are given. The review of already implemented artificial intelligence projects is presented, as well as the forecast of the most promising directions of development in the near future.
Текст научной работы на тему «Перспективы нейронных сетей и глубокого машинного обучения в создании решений для здравоохранения»
к.т.н., заместитель директора по развитию, компания «Комплексные медицинские информационные системы» (К-МИС), e-mail: [email protected]
ПЕРСПЕКТИВЫ НЕЙРОННЫХ СЕТЕЙ И ГЛУБОКОГО МАШИННОГО ОБУЧЕНИЯ В СОЗДАНИИ РЕШЕНИЙ ДЛЯ ЗДРАВООХРАНЕНИЯ
Гусев А.В. Перспективы нейронных сетей и глубокого машинного обучения в создании решений для здравоохранения (Комплексные медицинские информационные системы, Россия)
Аннотация. В работе приведен обзор перспектив применения нейронных сетей и глубокого машинного обучения в создании систем искусственного интеллекта для здравоохранении. Приводится определение и пояснения по технологиям машинного обучения и нейронных сетей. Представлен обзор уже реализованных проектов применения искусственного интеллекта, а также дается прогноз наиболее перспективных, по мнению автора, направлений развития в ближайшее время.
Ключевые слова: искусственный интеллект, машинное обучение, нейронные сети, здравоохранение, медицина.
Gusev A. V. Prospects for neural networks and deep machine learning in creating health solutions (Compex medical information system, Russian)
Abstract. The paper gives an overview of the prospects of using neural networks and deep machine learning in the creation of artificial intelligence systems for healthcare. The definition and explanations on the technologies of machine learning and neural networks are given. The review of already implemented artificial intelligence projects is presented, as well as the forecast of the most promising directions of development in the near future.
Keywords: artificial intelligence, machine learning, neural networks, healthcare, medicine.
На сегодняшний день искусственный интеллект (ИИ) считается важнейшей сферой ИТ-исследований и ведущим драйвером прорывного индустриального роста, который в последнее время называют «Индустрией 4.0».
Как электричество изменило и привело к новой промышленной революции в XIX веке, так искусственный интеллект и информационные технологии воспринимаются сегодня как источник глубокой трансформации общества и экономики в XXI веке [1].
Согласно данным IDC объём рынка решений, основанных на технологиях ИИ, в 2020 году в денежном выражении составил приблизительно 7,9 млрд. долл. В 2020-м, как ожидается, он вырастет на 59,3% и достигнет 12,5 млрд. долл. Аналитики полагают, что до конца текущего десятилетия среднегодовой темп роста (CAGR) окажется на уровне 54%. В результате в 2020 г. объём отрасли превысит 46 млрд. долл. Наибольшую долю этого рынка составят
© А.В. Гусев, 2020 г.
так называемые «когнитивные» приложения, которые автоматически изучают данные и составляют различные оценки, рекомендации или прогнозы, используя методы искусственного интеллекта. Рынок решений на базе искусственного интеллекта в области здравоохранения и наук о жизни, по оценкам Frost & Sullivan, также будет расти до 40% в год, достигнув в 2021 г. уровня 6,6 млрд. долл. [5].
Искусственный интеллект имеет длинную историю, начинающуюся с теоретических работ Тьюринга по кибернетике, датированных началом XX века. Хотя концептуальные предпосылки появились еще ранее, с философских работ Рене Декарта «Рассуждение о методе» (1637) и работы Томаса Гоббса «Человеческая природа» (1640).
Летом 1956 года в Университете Дартмута в США прошла первая рабочая конференция с участием таких ученых, как Маккарти, Минский, Шеннон, Тьюринг и другие, которые впоследствии были названы основателями сферы искусственного разума. В течение 6 недель ученые обсуждали возможности реализации проектов в сфере искусственного интеллекта. Именно тогда и появился сам термин Artificial Intelligence (AI) — искусственный интеллект [1].
В начале 80-х гг. ученые в области теории вычислений Барр и Файгенбаум предложили следующее определение ИИ: «Искусственный интеллект — это область информатики, которая занимается разработкой интеллектуальных компьютерных систем, то есть систем, обладающих возможностями, которые мы традиционно связываем с человеческим разумом, — понимание языка, обучение, способность рассуждать, решать проблемы и т. д.» [1].
Постенно, по мере развития, понимание термина ИИ уточнялось и изменялось. И в 2020 г. Джефф Безос, CEO Amazon уже так пишет об ИИ: «За последние десятилетия компьютеры автоматизировали многие процессы, которые программисты могли описать
через точные правила и алгоритмы. Совре менные техники машинного обучения позволяют нам делать то же самое с задачами, для которых намного сложнее задать четкие правила» [15].
Фактически в настоящее время на базе методов искусственного интеллекта создаются и развиваются различные программные системы, главной особенностью которых является способность решать интеллектуальные задачи так, как это делал бы размышляющий над их решением человек. К наиболее популярным направлениям применения ИИ относятся прогнозирование различных ситуаций, оценка любой цифровой информации, включая неструктурированные данные, с попыткой дать по ней заключение, а также анализ информации с поиском скрытых закономерностей (data mining).
Считается, что в настоящее время ИИ не под силу в полной мере сымитировать сложные процессы высшей нервной деятельности человека, такие как проявление эмоций, любовь, творчество, которые относятся к сфере так называемого «сильного ИИ», где прорыв ожидается не ранее 2030-2050 годов. Хотя такие попытки уже предпринимаются: например, создание с помощью нейронных сетей музыкальных произведений [22], распознавание эмоций с перспективой их генерации [23] и даже попытки наделить человекоподобных роботов свободой воли при взаимодействии с людьми [24].
Пока удается успешно решать задачи так называемого «слабого ИИ», выступающего в роли кибернетического автомата и работающего по предписанным человеком правилам. Постепенно растет число успешно внедренных проектов, т.н. «среднего ИИ», где ИТ система имеет элементы адаптивного самообучения, совершенствуясь по мере накопления первичных данных, по-новому рекласси-фицируя текстовые, графические, фото/видео, аудио данные и т. п.
О нейронных сетях
И МАШИННОМ ОБУЧЕНИИ
На сегодняшний день накоплены и систематизированы самые разнообразные подходы в применении статистических и математических алгоритмов для построения систем ИИ, таких как байесовские методы, логистическая регрессия, метод опорных векторов, решающие деревья, ансамбли алгоритмов и т. д. [19].
В 2005-2008 годах в исследованиях по ИИ произошел качественный скачок. Математический научный мир стал активно изучать подход, основанный на модели обучения многослойных нейронных сетей, ставших фундаментом развития другой теории — глубокого машинного обучения. А ИТ-отрасль стала разрабатывать первые прикладные системы на базе этих подходов и активно изучать их.
В последнее время ряд зарубежных экспертов пришли к выводу, что большинство современных и действительно удачных реализаций — это решения, построенные на технологии глубоких нейронных сетей (deep neural networks) и глубокого машинного обучения (deep learning) [3].
Нейронные сети (.neural networks) основаны на попытке воссоздать «упрощенную» модель нервных систем в биологических организмах. У живых существ нейрон — это электрически возбудимая клетка, которая обрабатывает, хранит и передает информацию с помощью электрических и химических сигналов через синаптические связи. Нейрон имеет сложное строение и узкую специализацию. Соединяясь друг с другом для передачи сигналов с помощью синапсов, нейроны создают биологические нейронные сети. В головном мозге человека насчитывается в среднем около 65 миллиардов нейронов и 100 триллионов синапсов [12]. По сути — это и есть базовый механизм обучения и мозговой деятельности всех живых существ, т.е. — их интеллект.
Именно способность биологических нервных систем обучаться «на своих ошибках» легла в основу идеи создать искусственный интеллект по данному принципу. В результате одним из подходов стала концепция «искусственного нейрона» — математической функции, которая преобразует несколько входных фактов в один выходной, назначая для них веса влияния. Каждый искусственный нейрон может взять взвешенную сумму входных сигналов и в случае, если суммарный вход будет превышать определенный пороговый уровень, передать двоичный сигнал дальше.
Математическая модель единичного нейрона (персептрона) была впервые предложена в 1943 году американскими нейрофизиологами и математиками Уорреном Мак-Каллоком и Уолтером Питтсом, они же предложили и определение искусственной нейронной сети. Физически модель при помощи компьютера была смоделирована в 1957 году Френком Розенблаттом. Можно сказать, что искусственный нейроны — это одна из самых старейших идей практической реализации ИИ (рис. 1).
Рис. 1. Искусственный нейрон
Искусственные нейроны объединяют в сети — соединяя выходы одних нейронов с входами других. Соединенные и взаимодействующие между собой искусственные нейроны образуют искусственную нейронную сеть — определенную математическую
модель, которая может быть реализована на программном или аппаратном обеспечении. Говоря совсем упрощенно, нейронная сеть — это просто программа — «черный ящик», которая получает на вход данные и выдает ответы. Будучи построена из очень большого числа простых элементов, нейронная сеть способна решать достаточно сложные задачи.
В настоящее время существует множество моделей реализации нейронных сетей. Есть «классические» однослойные нейронные сети, они применяются для решения простых задач. Однослойная нейронная сеть идентична в математическом смысле обычному полиному, весовой функции, традиционно применяемой в экспертных моделях. Число переменных в полиноме равно числу входов сети, а коэффициенты перед переменными равны весовым коэффициентам синапсов.
Есть математические модели, в которых выход одной нейросети направляется на вход другой, и создаются каскады связей, так называемые многослойные нейронные сети (MNN, multilayer neural network), и один из более развитых ее вариантов, созданного специально для распознавания образов на изображениях — сверточные нейронные сети (CNN, convolutional neural network).
MNN обладают большими вычислительными возможностями, но и требуют огромных вычислительных ресурсов. С учетом размещения ИТ систем в облачной инфраструктуре, многослойные нейросети стали доступны большему числу пользователей. Например, в 2020 году компания Digital Reasoning из США, занимающаяся когнитивными вычислительными технологиями, создала и обучила нейронную сеть, состоящую из 160 миллиардов цифровых нейронов. Это значительно мощнее нейросетей, имеющихся в распоряжении компаний Google (11,2 миллиарда нейронов) и Национальной лаборатории США в Ливерморе (15 миллиардов нейронов) [7].
Другой интересной разновидностью ней росетей являются нейронные сети с обратной связью (RNN, recurrent neural network), когда выход со слоя сети подается обратно на один из входов. У таких платформ есть «эффект памяти», и они способны отслеживать динамику изменений входных факторов. Простой пример — улыбка. Человек начинает улыбаться с еле заметных движений мимических мышц глаз и лица, прежде чем явно покажет свои эмоции. RNN позволяет обнаружить такое движение еще на ранних фазах, что бывает полезно для прогнозирования поведения живого объекта во времени посредством анализа серии изображений или конструировании последовательного потока речи на естественном языке.
Машинное обучение (machine learning) -это процесс машинного анализа подготовленных статистических данных для поиска закономерностей и создания на их основе нужных алгоритмов (настройки параметров нейронной сети), которые затем будут использоваться для прогнозов.
Различают 3 основных подхода к машинному обучению [25]:
— обучение с учителем;
— обучение с подкреплением;
— обучение без учителя (самообучение).
В обучении с учителем используются специально отобранные данные, в которых уже известны и надежно определены правильные ответы, а параметры нейронной сети подстраиваются так, чтобы минимизировать ошибку. В этом способе ИИ может сопоставить правильные ответы к каждому входному примеру и выявить возможные зависимости ответа от входных данных. Например, коллекция рентгенологических снимков с указанными заключениями будет являться базой для обучения ИИ — его «учителем». Из серии полученных моделей человек в итоге выбирает наиболее подходящую, например, по максимальной точности выдаваемых прогнозов.
Нередко подготовка таких данных и ретроспективных ответов требует большого человеческого вмешательства и их ручного отбора. Также на качество полученного результата влияет субьективность человека-эксперта. Если по каким-либо соображениям он не рассматривает при тренировке всю совокупность выборки и ее атрибутов, его понятийная модель ограничена текущим уровнем развития науки и техники, указанной «слепотой» будет обладать и полученное ИИ решение.
Важно отметить, что нейросети являются функцией с нелинейными преобразованиями и обладают гиперспецифичностью — результат работы алгоритма ИИ будет непредсказуем, если на вход будут поданы параметры, выходящие за границы значений обучающей выборки. Поэтому важно обучать ИИ систему на примерах и частотности, адекватных последующим реальным условиям эксплуатации. Сильно влияет географический и социо-демо-графический аспект, что, в общем случае, не позволяет использовать без потери точности математические модели, натренированные на популяционных данных других стран и регионов. За репрезентативность обучающей выборки также отвечает эксперт.
Самообучение применяется там, где нет заранее заготовленных ответов и алгоритмов классификации. В этом случае ИИ ориентируется на самостоятельное выявление скрытых зависимостей и поиск онтологии. Машинное самообучение позволяет распределить образцы по категориям за счет анализа скрытых закономерностей и «автовосстановления» внутренней структуры и природы информации. Это позволяет исключить ситуацию системной «слепоты» врача или исследователя. Допустим в ситуации, когда они разрабатывают модель ИИ прогноза сахарного диабета 2-го типа, сосредотачивая основное внимание на показателях глюкозы в крови или весе пациента. Однако одновременно они вынужденно игнорируют всю другую информацию из истории
болезни, которая также могла бы быть полезна. Глубокий подход к обучению позволяет тренировать ИИ на многомиллионной базе пациентов и проанализировать любой тест, который когда-либо был записан о пациенте в его электронной медицинской карте.
Механизмы глубокого машинного обучения (deep learning) используют, как правило, многослойные нейросети и очень большое число экземпляров объектов для тренировки нейронной сети. Число записей в обучающей выборке должно насчитывать сотни тысяч или даже миллионы примеров, а когда ресурсы не ограничены — и больше.
К примеру, для того, чтобы научить ИИ распознавать лицо человека на фотографии, команде разработчиков в Facebook потребовались миллионы изображений с мета-данными и тегами, говорящими о наличии лица на фото. Успех Facebook в реализации функции распознавания лиц как раз лежал в огромном количестве исходной для обучения информации: в социальной сети имеются аккаунты сотен миллионов людей, которые выкладывали гигантское количество фотографий и при этом указывали на них лица и отмечали (идентифицировали) людей. Глубокое машинное обучение на основе такого количества данных позволило создать надежный искусственный интеллект, который теперь за считанные миллисекунды не просто обнаруживает лицо человека на изображении, но и достаточно часто угадывает -кто именно изображен на фотографии.
Большое количество записей обучающей выборки необходимо ИИ и для создания необходимых правил классификации. Чем больше разнородных данных будет загружено в систему на этапе машинного обучения, тем точнее будут выявлены эти правила, и тем в конечном итоге точнее будет результат работы ИИ. Например, при обработке рентгенограмм и МРТ многослойные нейросети способны по изображениям составить представление об анатомии человека и его органах. Вместе с тем
придумать в своей компьютерной классификации названия органов, аналогичные классической врачебной терминологии, компьютеры не смогут. Поэтому им на первых порах требуется «переводчик» с внутреннего машинного словаря на профессиональную лексику. Для подготовки мотивированного суждения нужен человек-эксперт, либо, как ни парадоксально, другая нейросеть, натренированная на задачи написания корректных расшифровок и заключений на естественном человеческом языке.
Метод обучения с учителем более удобен и предпочтителен в тех ситуациях, когда есть накопленные и достоверные ретроспективные исходных данные: обучение на их основе потребует меньше затрат времени и позволит быстрее получить работающее ИИ-решение. Там, где возможность получить базу данных с сопоставленной информацией и ответами на нее отсутствует — необходимо применять методы самообучения на основе глубокого машинного обучения; такие решения не будут нуждаться в надзоре человека.
Нам представляется, что исследователям и стартапам, только начинающим знакомиться с ИИ и ищущим возможности его применения в здравоохранении, целесообразно начать именно с методов машинного обучения с учителем. Это потребует меньше затрат (временных, финансовых) на создание прототипа работающей системы и практическое освоение методик ИИ. Функционирующую систему ИИ под конкретную задачу в этом случае можно получить быстрее. В настоящее время на рынке есть большое число качественных библиотек программного кода для искусственных нейросетей, таких как TensorFlow https://www.tensorflow.org/ для математического моделирования, OpenCV http://opencv. org/ для задач распознавания изображений, поставляемых бесплатно, по лицензии «свободное программное обеспечение».
Кроме практического эффекта в повышенной точности, которая сегодня может достигать
95%, системы ИИ в момент обработки данных имеют и высокую скорость работы. Неоднократно проводились эксперименты, например, по распознаванию образов с разных ракурсов, в которых соревновались человек и компьютер. Пока темп показа изображений был невысокий — 1-2 кадра в минуту, человек безусловно выигрывал у машины. При анализе изображений патологии ошибка человека составляла не более 3,5%, а компьютер давал ошибку диагностики 7,5%. Однако, при повышении темпа до 10 кадров в минуту и выше у человека ослабевала реакция, наступала утомляемость, что приводило к полному браку в работе. Компьютер же непрерывно учился на своих ошибках и в следующей серии только повышал точность работы. Перспективным оказался режим парной работы человека и компьютера, при котором удалось повысить точность диагностики на 85% на относительно высокой для человека скорости демонстрации изображений [5].
Разумеется, нельзя говорить об эффективном построении моделей ИИ и их точности, если отсутствует необходимая отечественная оцифрованная информация для их обучения. Поэтому критически важно, пусть даже в режиме не полного отказа от классического бумажного документооборота, а дублирования медицинского документооборота и в бумажной, и в электронной форме, начинать накапливать российские банки электронных медицинских данных. И дать возможность использовать их в обезличенном виде, без разглашения персональных данных пациентов, для создания и совершенствования отечественных ИИ решений.
ЧЕМ ОТЛИЧАЕТСЯ СОЗДАНИЕ ИИ ОТ ОБЫЧНОЙ РАЗРАБОТКИ ПО?
Главное отличие методов искусственного интеллекта, построенных на базе нейронных сетей и машинного обучения, от обычного программирования состоит в том, что при
создании ИИ программисту не нужно знать все зависимости между входными параметрами и тем результатом, который должен получится (ответом). Там, где такие зависимости хорошо известны или где есть надежная математическая модель для решения определенной задачи — целесообразно создавать систему на базе обычных методов алгоритмического программирования. Например, расчет статистического отчета или формирование реестра на оплату медицинской помощи вряд ли стоит реализовывать на основе методов искусственного интеллекта — современные программные продукты справляются с такими задачами вполне надежно и в приемлемое время, а стоимость их создания и развития будет ниже, чем на базе ИИ.
Использование технологий глубокого машинного обучения искусственный нейронных сетей оправдано там, где невозможно задать четкие правила, формулы и алгоритмы для решения задачи. Например, ответ на вопрос «есть ли на рентгенологическом снимке патология?». Такой подход предполагает, что вместо создания программ для расчета заранее заданных формул, машину обучают с помощью большого количества данных и различных методов, которые дают ей возможность самостоятельно выявить эту формулу на основе эмпирических данных и тем самым научиться выполнять задачу в будущем. При этом команда разработчиков трудится именно над подготовкой данных и обучением, а не над попыткой написать программу, которая будет как-то анализировать снимок по заранее заданным алгоритмам и получать ответ — так есть на нем аномалия или нет?
Появился целый класс информационных систем, получивших обозначение «IT+DT+AI+ ЮТ» или Цифровые платформы, построенных на данной парадигме. Сокращение «1Т» в них обозначает всеобщую цифровизацию процессов и компьютеризацию рабочих мест,
«DT» — накопление данных и использование технологий мощной обработки информации, а «AI» — говорит о том, что на накопленных данных будут создаваться роботизированные алгоритмы ИИ, которые будут действовать как в партнерстве с человеком, так и самостоятельно. Сокращение «IOT» означает «интернет вещей» (internet of things) — вычислительная сеть, состоящая из физических предметов («вещей»), оснащённых встроенными технологиями для взаимодействия друг с другом или с внешней средой. Создание цифровых платформ для нужд здравоохранения стоит в числе стратегических приоритетных задач перед развитыми экономиками мира, включая Россию [17].
КАКИЕ ИМЕННО ЗАДАЧИ МОЖНО ПОРУЧАТЬ ИИ?
Andrew Ng, лидер команды Google Brain (Google Brain team) и бывший директор Лаборатории искусственного интеллекта Стэнфор-да (Stanford Artificial Intelligence Laboratory), говорит о том, что в настоящее время СМИ и шумиха вокруг ИИ иногда придают этим технологиям нереалистическую силу. На самом деле реальные возможности применения ИИ достаточно ограничены: современный ИИ пока способен давать точные ответы лишь на простые вопросы [3].
Совместно с большим объемом исходных данных для обучения именно реальная и посильная постановка задачи являются важнейшим условием будущего успеха или провала ИИ проекта. Пока ИИ не может решать сложные задачи, непосильные и врачу, вроде создания фантастического прибора, самостоятельно сканирующего человека, способного поставить ему любой диагноз и назначить эффективное лечение. Сейчас ИИ способен скорее отвечать на более простые вопросы, например, оценить — присутствует ли инородное тело или патология на рентгенологическом снимке или ультразвуковом
изображении? Имеются ли раковые клетки в цитологическом материале? и т. д. Но неуклонный рост точности диагностики посредством ИИ модулей заставляет задуматься. В публикациях уже заявлялись полученные значения точности ИИ до 93% при обработке радиологических изображений, МРТ, маммограм; до 93% точности при обработке пренатальных УЗИ; до 94,5% в диагностике туберкулеза; до 96,5% в предсказании язвенных инцидентов [16].
По мнению эксперта Andrew Ng реальные возможности ИИ на данное время можно оценить таким простым правилом: «Если обычный человек может выполнить мысленную задачу за секунды, то мы можем, вероятно, автоматизировать ее с помощью ИИ или сейчас, или в ближайшем будущем» [3].
Конкретные алгоритмы или даже решения — не самое сложное и затратное в успехе ИИ в медицине. Примеры успешных идей публикуются открыто, а программное обеспечение уже сейчас доступно по модели СПО. Например, DeepLearning4j (DL4J) — https://deeplearning4j.org/, Theano -http://deeplearning.net/software/theano/, Torch — http://torch.ch/, Caffe — http://caffe. berkeleyvision.org/ и ряд других.
На самом деле основными барьерами перед массовым применением ИИ в здравоохранении являются следующие 2 аспекта:
1. Наличие большого количества данных для обучения.
2. Профессиональный и креативный подход к тренировке ИИ.
Без выверенных и качественных данных ИИ не будет работать, именно они являются первой серьезной сложностью для внедрения. Без талантливых людей простое применение готовых алгоритмов к подготовленным данным также не будет давать результат, т.к. ИИ необходимо будет настроить на понимание этих данных для решения конкретной прикладной задачи [3].
ОБЗОР ПРАКТИЧЕСКОГО ОПЫТ В СОЗДАНИИ СИСТЕМ НА БАЗЕ НЕЙРОННЫХ СЕТЕЙ И МАШИННОГО ОБУЧЕНИЯ
Здравоохранение считается одним из основных направлений, которое может позволить выйти на действительно эффективный уровень развития ИИ на базе нейронных сетей и машинного обучения. Предполагается, что использование ИИ может массово повысить точность диагностики, облегчить жизнь пациентам с различными заболеваниями, повысить скорость разработки и выпуска новых лекарств и т. д.
Пожалуй самым крупным и наиболее известным примером применения ИИ в медицине является американская корпорация IBM и ее когнитивная система IBM Watson, состоящая из 90 серверов с восьмиядерными процессорами и суммарным объемом оперативной памяти более 15 терабайт [21].
Первоначально это решение подготовили для применения в онкологии. Для этого IBM Watson два года обучали, загрузив в ее нейронную сеть 605 тысяч медицинских документов из 25 тысяч электронных историй болезни, взятых из обработанного гигантского архива исследовательского центра Memorial Sloan Kettering Cancer Center в Нью-Йорке [20]. Кроме этого, при обучении IBM Watson было проанализировано 30 млрд. медицинских снимков, для чего корпорации IBM пришлось купить компанию Merge Healthcare за 1 млрд. долл. Дополнительно к этому процессу потребовалось добавиться 50 млн. анонимных электронных медицинских карт, которые IBM получила в свое распоряжение, купив стартап Explorys [16].
Существует общее заблуждение, что в своей работе IBM Watson берет данные конкретного пациента и затем на основании самых лучших клинических рекомендаций и методик обследования и лечения, собранных со всего мира, назначает индивидуальное и эффективное лечение, заменяя тем самым врача и делая за него его работу.
Но на самом деле принцип работы состоит в следующем: предварительно медицинская сестра собирает и подготавливает все доступные по пациенту медицинские данные. Затем лечащий врач нажимает на кнопку «Спросить Ватсона», данные передаются в систему для анализа. Ватсон перерабатывает эту информацию и, используя предварительно обученную нейронную сеть, ищет с ее помощью похожие прецеденты, из них берет назначенное лечение, которое затем выдает врачу как собственные клинические рекомендации по лечению пациента. За это больницы платят от 200 до 1000 долларов на каждого пациента. По заявлениям и различным, большей частью рекламным, публикациям в результате созданная система назначает правильное (то есть соответствующее современным рекомендациям) лечение в 90% случаев.
Основная проблема состоит в том, что «доктор Ватсон» никогда не проходил клинических испытаний. Нет ни одного независимого клинического исследования робота. Все статьи, в которых говорится о его эффективности, написаны клиентами системы, в соавторах обязательно значится инженер из IBM [21]. По сути, созданная система не соответствует требованиям доказательной медицины, т.к. с клинической точки зрения не было проведено соответствующих научных экспериментов и исследований.
Кроме того, назначаемое IBM Watson лечение совпадает с той терапией, которую на практике назначали врачи из медицинских учреждений, чьи медицинские данные использовались при создании и обучении нейронной сети машины. В них точность работы системы доходит до 95%. Но, например, в Датских больницах врачи провели свое изучение системы и выяснили, что у них уровень совпадений составляет всего 33% и отказались от использования решения [20]. Врачи за пределами США обращают внимание, что рекомендации Ватсона не берут в расчет особенности
национального здравоохранения и врачебной практики. В Южной Корее робот часто назначает лечение, которое не покрывает национальная система страхования, на Тайване пациентом принято назначать меньшие дозы лекарств, предотвращая побочные эффекты.
Таким образом, система способна показать свою эффективность скорее только там, где были взяты данные для ее обучения, т.к. на самом деле эти данные (включая медицинские статьи из журналов) и все алгоритмы суперкомпьютера «вбивали» сотрудники Memorial Sloan Kettering Cancer Center. И это создает сразу две проблемы: во-первых, не все ученые и врачи в других больницах и тем более странах согласны с подходами этого исследовательского центра, и не все считают его абсолютным авторитетом в онкологии. Во-вторых, количество данных, которыми оперирует Ватсон, не очень велико на самом деле, и было бы гораздо больше, если бы их действительно сгружали в систему все больницы, подключенные к нейросети. «Предположим, у вас есть 10 000 пациентов с раком легких. Это на самом деле не очень много. Если бы их было больше, вы могли бы увидеть паттерны, группы пациентов, которые определенным образом отвечают или не отвечают на терапию, у которых определенные токсические реакции. Это позволило бы создать более персонализированную и точную медицину. Но мы не можем этого сделать, если у нас не будет способа собирать эти данные», — говорит доктор Линда Чинь (Lynda Chin), которая занималась установкой и обучением Ватсона в техасской больнице MDAnderson до того, как уволилась, а эта организация прекратила сотрудничество с IBM [21].
Но тем не менее созданная система находит свое применение. Так, она достаточно эффективно работает в странах, в которых вообще нет онкологов. В Монголии, например, есть больница UBSongdoв Улан-Баторе, в которой 100% назначений проходит через
робота (и назначения выполняются, по возможности). В противном случае пациентов лечили бы врачи общей практики без онкологического опыта, а так пациентам доступен самый передовой американский клинический опыт.
Несмотря на объективные сложности и выявляемые проблемы, IBM не сдается и расширяет свои исследования и попытки создания систем на базе ИИ для здравоохранения. В 2014 году IBM объявила о сотрудничестве с Johnson & Johnson и фармацевтической компанией Sanofi для работы над обучением Watson пониманию результатов научных исследований и клинических испытаний. По утверждению представителей компании, это позволит существенно сократить время клинических испытаний новых лекарств, а врачи смогут давать лекарства, наиболее подходящие конкретному пациенту.
В том же 2014 году IBM объявила о разработке еще одного программного обеспечения — системы Avicenna, способной интерпретировать неструктурированный медицинский текст и изображения. Для каждого типа данных используются отдельные алгоритмы. Так что в итоге Avicenna сможет понимать медицинские снимки и записи и будет выполнять функции ассистента радиолога. Над похожей задачей работает и другой проект IBM-$5edical Sieve. В данном случае речь идет о развитии искусственного интеллекта «медицинского ассистента», который сможет быстро анализировать сотни снимков на предмет отклонения от нормы. Это поможет радиологам и кардиологам заняться теми вопросами, в которых искусственный интеллект пока бессилен [16].
Недавно разработчики IBM совместно с Американской кардиологической ассоциацией приняли решение расширить возможности Watson, предложив помощь системы и кардиологам. По задумке авторов проекта, в рамках этого проекта система будет анализировать огромное количество медицинских данных, имеющих отношение к тому либо
иному пациенту. В число этих данных входят изображения с УЗИ, рентгеновские снимки и все прочая графическая информация, позволяющая уточнить диагноз человека. В самом начале возможности Watson будут использоваться для поиска признаков стеноза аортального сердечного клапана. При стенозе отверстие аорты сужается за счет сращивания створок её клапана, что препятствует нормальному току крови из левого желудочка в аорту. Проблема в том, что выявить стеноз клапана не так и просто, несмотря на то, что это очень распространённый порок сердца у взрослых (70-85% случаев среди всех пороков). Watson попытается определить, что он «видит» на медицинских изображениях: стеноз, опухоль, очаг инфекции или просто анатомическую аномалию, а затем дать соответствующую оценку лечащему врачу, чтобы ускорить и повысить качество его работы [10].
Совместно с Boston Children’s Hospital, занимающимися редкими детскими болезнями, IBM Watson хотят обучить ставить более точные диагнозы; для этого система будет искать необходимую информацию в клинических базах данных и научных журналах, которые хранятся в медицинском облаке Watson Health Cloud [16].
Отметим, что проект IBM Watson, как и любой новаторский продукт, изначально не ставил перед создателями явные экономические цели. Затраты на этапы создания его компонент обычно превышали плановые, а его содержание весьма обременительно, если сравнивать с традиционными бюджетами в здравоохранении. Скорее на данное время его можно рассматривать как некий испытательный полигон, на котором можно обкатывать перспективные ИТ технологии, выявлять и обсуждать возникающие сложности и вдохновлять исследователей на новые продукты. А затем уже проверенные и испытанные прототипы следует переводить в серийное производство, добиваясь более высоких
показателей цена-качество и пригодности к эксплуатации в реальных условиях.
Еще одним гигантом ИТ-отрасли, который занялся разработкой и исследованием перспектив нейронных сетей и машинного обучения в создании ИИ для здравоохранения, является американская корпорация Google. Ее система DeepMind Health, по заявлениям разработчиков, способна за несколько минут обработать сотни тысяч медицинских записей и выделять из них нужную информацию. Хотя этот проект находится еще на ранней стадии, DeepMind уже сотрудничает с Глазной больницей Мурфильдса (Великобритания) с целью повышения качества лечения. Используя миллион анонимизированных, полученных с помощью томографа изображений глаз, исследователи стараются создать алгоритмы на базе технологий машинного обучения, которые бы помогали обнаружить ранние признаки двух глазных заболеваний — влажной возрастной макулярной дистрофии и диабетической ретинопатии. Похожим занимается и другая компания, входящая в Google — Verily. Специалисты этой фирмы используют искусственный интеллект и алгоритмы поисковика Google для того, чтобы проанализировать, что же делает человека здоровым [11].
Но не только крупные корпорации занимаются темой ИИ для здравоохранения. Постепенно в мире появляются различные небольшие исследовательские группы и стартапы, которые предлагают инновационные идеи и создают прототипы соответствующих систем. Например, исследовательской группе в компании Emergent удалось выявить пять новых биомаркеров, на которые могут быть нацелены новые лекарства при лечении глаукомы. По словам ученых, для этого в систему ИИ вводится информация о более чем 600 тыс. специфических последовательностей ДНК 2,3 тыс. пациентов и данные о генных взаимодействиях [16].
Израильская компания MedyMatch Technology, в штате которой насчитывается
всего 20 человек, разработала на базе обученной нейронной сети и Big Data решение, благодаря которому врачи могут точнее диагностировать инсульт. Для этого в режиме реального времени система MedyMatch сравнивает снимок мозга пациента с созданной базой знаний на основе сотен тысяч расшифрованных изображений. Известно, что инсульт может быть вызван несколькими причинами, в том числе кровоизлиянием в головной мозг и тромбом. Соответственно, каждый из этих случаев требует разного подхода в лечении. Однако по статистике, несмотря на улучшение в области КТ, количество ошибок при постановке диагноза за последние 30 лет не изменилось и составляет приблизительно 30%. То есть почти в каждом третьем случае врач назначает пациенту неверное лечение, что приводит к печальным последствиям. Система MedyMatch способна отследить мельчайшие отклонения от нормы, которые не всегда способен заметить специалист, таким образом сводя вероятность ошибки в постановке диагноза и назначении лечения к минимуму [16].
Все больше внимания в последнее время уделяется попыткам применять технологии ИИ не только при создании решений для врачей, но и для пациентов. Например, мобильное приложение британской компании Your. MD, запуск которого произошел в ноябре 2015 года. Эта программа использует технологии машинного обучения и обработки естественного языка. Это позволяет пациенту просто сказать, к примеру: «У меня болит голова», — а затем получить от смартфона рекомендации по последующим действиям. Для этого система искусственного интеллекта Your.MD подключена к самой большой в мире базе данных: в ней учтено 1,4 млн. симптомов, на идентификацию которых потребовалось более 350 тыс. часов. Каждый симптом был проверен специалистом британской системы здравоохранения. Искусственный интеллект выбирает наиболее подходящий
симптом, основываясь на уникальном профиле владельца смартфона [16].
Другая компания, Medtronic, предлагает приложение, способное предсказать критическое снижение уровня сахара за три часа до события. Для этого Medtronic используют технологии когнитивной аналитики, а также данные глюкометров и инсулиновых помп. С помощью приложения люди смогут лучше понимать влияние ежедневной активности на диабет. В рамках еще одного интересного проекта, на этот раз совместного с диагностической компанией Pathway Genomics, создано приложение OME, объединяющее когнитивную и прецизионную медицину с генетикой. Цель приложения — предоставить пользователям персонализированную информацию для повышения качества жизни. Первая версия приложения включает в себя рекомендации по диете и упражнениям, сведения по метаболизму, которые зависят от генетических данных пользователя, карту с привычками пользователя и информацией о его состоянии здоровья. В будущем должны добавиться электронные медицинские карты, информация о страховке и другие дополнительные сведения [16].
Кроме исследований в области прямого клинического применения, элементы ИИ пытаются использовать и во вспомогательных процессах медицинской организации. Например, осуществляются попытки обучить ИИ в части автоматической диагностики качества работы медицинской информационной системы, в вопросах обеспечения информационной безопасности. Появляются предположения, что системы ИИ могут помочь с выдачей рекомендаций по своевременной настройке справочников, тарифов или даже заметить аномальное поведение сотрудника и порекомендовать его руководителю направить его на обучение работе с системой, так как возникли подозрения в его невысоком профессионализме и замедленной реакции.
ОБЗОР НАИБОЛЕЕ ПЕРСПЕКТИВНЫХ НАПРАВЛЕНИЙ
Изучив множество публикаций и исследований в области применения методов машинного обучения на основе нейронных сетей, мы выделили несколько наиболее перспективных, на наш взгляд, направлений в создании и развитии систем искусственного интеллекта для здравоохранения:
1. Автоматизированные системы диагностики, например, системы для автоматического анализа рентгенологических или МРТ-снимков на предмет выявления патологии, микроскопический анализ биологического материала, автоматическая расшифровка ЭКГ, электроэнцефалограмм и т.д. Хранение в медицинских информационных системах большого количества уже расшифрованных результатов диагностического обследования в электронном виде, когда имеются не только сами данные, но и формализованное заключение по ним, позволяет создавать действительно надежные и ценные программные продукты, способные если не заменить врача, то оказать ему эффективную помощь. Например, самостоятельно выявлять и обращать внимание на рутинную патологию, сокращать время и стоимость обследования, внедрять аутсорсинг и дистанционную диагностику.
2. Системы распознавания неструктурированных медицинских записей и понимания естественного языка могут оказать существенную помощь как врачу, так и пациенту. Начиная от уже обычной расшифровки речи и превращении ее в текст в качестве более продвинутого интерфейса общения с медицинскими информационными системами (МИС), обращения в Са11-центр или голосового помощника — и далее до таких идей, как автоматический анализ врачебных записей и медицинских документов и последующая постановка предварительного диагноза с выводом рекомендаций по тактике
обследования и лечения. В этом направлении мы ожидаем множество прорывных и интересных идей, таких как языковой перевод при поступлении иностранца, синтез речи при прочтении записей из МИС, робот-регистратор в приемном отделении больницы или регистратуре поликлиники, способный отвечать на простые вопросы и маршрутизировать пациентов и т.д.
3. Системы анализа и предсказания событий также являются вполне решаемыми уже сейчас задачами для ИИ, которые могут дать существенный эффект. Например, оперативный анализ изменений заболеваемости позволяет быстро предсказать изменение обращаемости пациентов в медицинские организации или потребность в лекарственных препаратах. Результаты работы ИИ, обученного на предсказание событий, могут позволить более эффективно управлять ресурсами, включая закупки расходных материалов, оснащение оборудованием и т.д.
4. Системы автоматической классификации и сверки информации помогают связать информацию о пациенте, находящейся в различных формах в различных информационных системах. Например,
построить интегральную электронную медицинскую карту из отдельных эпизодов, описанных с разной детальностью и без четкого или противоречивого структурирования информации. Перспективной является технология машинного анализа содержимого контента социальных сетей, интернет-порталов с целью быстрого получения социологической, демографической, маркетинговой информации о качестве работы системы здравоохранения и отдельных лечебных учреждений.
5. Автоматические чат-боты для поддержки пациентов могут оказать существенную помощь в повышении приверженности пациентов здоровому образу жизни и назначенному лечению. Мы ожидаем развития в попытках создать чат-ботов, которые могут научится отвечать на рутинные вопросы, подсказывать тактику поведения пациентов в простых ситуациях, соединять пациента с нужным врачом в телемедицине, давать рекомендации по диете и т.д. Такое развитие здравоохранения в сторону самообслуживания и большей вовлеченности пациентов в охрану собственного здоровья без визита к врачу может сэкономить существенные финансовые ресурсы.
1. Искусственный интеллект (ИИ) / Artificial Intelligence (AI) как ключевой фактор цифро-визации глобальной экономики // URL: https://www.crn.ru/news/detail.php? >
2. Сверхразум как бизнес-идея // URL: http://fastsalttimes.com/sections/technology/865. html (Дата обращения: 07.03.2020).
3. Andrew Ng. What Artificial Intelligence Can and Can’t Do Right Now // Harvard Business Review. URL: https://hbr.org/2020/11/what-artificial-intelligence-can-and-cant-do-right-now (Дата обращения: 03.05.2020).
4. Poker-Playing Engineers Take on AI Machine — And Get Thrashed // URL: https://www. bloomberg.com/news/articles/2020-04-10/poker-ai-again-trounces-human-challengers-from-china-this-time (Дата обращения: 03.05.2020).
5. From coding to cancer: How AI is changing medicine — NBR, CNBC.com // URL: http://nbr. com/2020/05/11/from-coding-to-cancer-how-ai-is-changing-medicine/ (Дата обращения: 14.05.2020).
6. Microsoft Build 2020: Microsoft AI — Amplify human ingenuity // URL: https://blogs.microsoft.com/ blog/2020/05/10/microsoft-build-2020-microsoft-ai-amplify-human-ingenuity/#sm.0000wf98mzy2 dfiyr722jwsyktgq6 (Дата обращения: 14.05.2020).
7. Создана самая большая нейронная сеть, предназначенная для реализации технологий искусственного интеллекта // URL: http://www.dailytechinfo.org/infotech/7173-sozdana-samaya-bolshaya-neyronnaya-set-prednaznachennaya-dlya-realizacii-tehnologiy-iskusstvennogo-intellekta. html (Дата обращения: 10.05.2020).
8. Стельмах С. Рынок технологий искусственного интеллекта будет ежегодно расти на 54% // URL: https://www.pcweek.ru/ai/article/detail.php? >
9. Dermatologist-level classification of skin cancer with deep neural networks // URL: http://www. nature.com/nature/journal/v542/n7639/full/nature21056.html (Дата обращения: 29.04.2020).
10. Когнитивная система Watson поможет врачам поставить точный диагноз пациентам с заболеваниями сердца // URL: https://geektimes.ru/company/ibm/blog/287100/ (Дата обращения: 02.04.2020).
11. 7 лучших систем искусственного интеллекта для обработки медицинской информации // URL: http://evercare.ru/7best-ai (Дата обращения: 03.04.2020).
12. Нейрон // URL: https://ru.wikipedia.org/wiki/Нейрон (Дата обращения: 02.05.2020).
13. Введение в глубинное обучение // URL: https://proglib.io/p/intro-to-deep-learning/ (Дата обращения: 03.05.2020).
14. Stephen Hawking: Automation and AI is going to decimate middle class jobs // URL: http://www. businessinsider.com/stephen-hawking-ai-automation-middle-class-jobs-most-dangerous-moment-humanity-2020-12 (Дата обращения: 04.05.2020).
15. Amazon’s Jeff Bezos constantly reminds his workers about the biggest enemy: ‘Irrelevance. Followed by excruciating, painful decline.’ // URL: http://www.businessinsider.com/read-amazon-ceo-jeff-bezos-2020-letter-to-shareholders-2020-4 (Дата обращения: 04.05.2020).
16. Utilizing Predictive Models for Evaluation of a Patient Medical Profile to Predict an Individual Pressure Ulcer Risk Assessment // URL: http://www.ehob.com/img/documents/document_123.pdf (Дата обращения: 14.05.2020).
17. Указ Президента Российской Федерации от 09.05.2020 г № 203 «О Стратегии развития информационного общества в Российской Федерации на 2020-2030 годы» // URL: http:// publication.pravo.gov.ru/Document/View/0001202005100002 (Дата обращения: 14.05.2020).
18. Искусственный интеллект в медицине: главные тренды в мире // URL: https://medaboutme. ru/zdorove/publikacii/stati/sovety_vracha/iskusstvennyy_intellekt_v_meditsine_glavnye_trendy_v_ mire/ (Дата обращения: 05.05.2020).
19. Дюжева Е.В., Кузнецова А.В., Сенько О.В. Определение факторов риска сердечно-сосудистой летальности в учреждениях уголовно-исполнительной системы с использованием методов машинного обучения // Врач и информационные технологии, № 2 2020 г. — С. 29-45.
20. IBM pitched its Watson supercomputer as a revolution in cancer care. It’s nowhere close // URL: https://www.statnews.com/2020/09/05/watson-ibm-cancer/ (Дата обращения: 05.09.2020).
21. Как доктор Ватсон не смог победить рак // URL: http://medportal.ru/mednovosti/news/ 2020/09/06/879watson/ (Дата обращения: 07.09.2020).
22. Генерация классической музыки с помощью рекуррентной нейросети // URL https://geektimes. ru/post/259958/ (Дата обращения: 20.09.2020).
23. Emotion recognition using neural networks // URL: https://www.researchgate.net/publica-tion/228402396_Emotion_recognition_using_neural_networks (Дата обращения: 20.09.2020).
24. Japan’s latest humanoid robot makes its own moves // URL: https://www.engadget. com/2020/07/30/japan-humanoid-alter-robot/ (Дата обращения: 20.09.2020).
25. Richard S. Sutton and Andrew G. Barto. Reinforcement Learning An Introduction — The MIT Press Cambridge, Massachusetts London, England, 2012. — 334 p.
Нейросети
Нейросети в повседневной жизни
Только совсем далекий от современных технологий человек не слышал про нейросети. Хотим мы того или нет, нейросети уже интегрированы в нашу повседневную жизнь.
Во многих случаях информация про нейронную сеть больше выглядит как хайп, чего только стоят следующие заголовки:
- «Сотрудники Яндекса Алексей Тихонов и Иван Ямщиков выпустили альбом «Нейронная оборона», состоящий из песен и стихотворений, написанных роботом»;
- «Нейронная сеть AlphaGo от Google одержала третью победу над одним из сильнейших игроков мира в го»;
- «Кинокомпания RitZEED сняла фильм по сценарию, который написала нейросеть»;
- «На аукционе Christieʼs за 432,5 тыс. долларов продали картину, созданную искусственным интеллектом».
Поисковые алгоритмы от Google и Яндекса построены на нейронных сетях. Онлайн-переводчики используют нейросеть в своей работе. Сервисы товарных рекомендаций, которые мы можем встретить на многих Web-сайтах, также основаны на нейронной сети. Алиса от Яндекса — еще одно детище нейросети.
Понятие «нейросеть» было придумано достаточно давно и является синонимом алгоритма машинного обучения. Первая версия формального нейрона, ячейки нейронной сети, была предложена Уорреном Мак-Каллоком и Уолтером Питтсом в 1943 г. А уже в 1958 г. Фрэнк Розенблатт разработал первую нейронную сеть. Но первый блин оказался комом, и другие алгоритмы машинного обучения отодвинули на какое-то время нейросети на второй план.
Популярность нейронные сети стали завоевывать после 2010 г. Для того чтобы разобраться, почему это произошло, мы должны понимать, как устроена нейросеть и в чем ее особенность.
Нейронные сети с помощью аппаратных и программных средств имитируют паутину нейронов в человеческом мозге. Но так как мы говорим о машинном обучении, результатом всех вычислений являются ноль (нет) или единица (да): то есть машина нам дает ответ, который близок к значению «нет» или «да». Соответственно, для того чтобы обучить машину распознавать числа, нам понадобится нейросеть, состоящая из секторов, каждый из которых будет отвечать за свою цифру от 0 до 9. Чем больше нам необходимо получить ответов вариантов ответов может быть, тем крупнее будет наша нейросеть.
Обучение нейросети
Глубинные нейронные сети состоят из слоев, поэтому мы часто и слышим термин «глубинное обучение». Каждый слой выполняет свою задачу и дальше взаимодействует со следующим слоем. Для того чтобы сеть работала правильно, мы должны дать ей на распознавание подготовленный объект. Многие слои нейросети как раз отвечают за такую подготовку: находят объект на фотографии, по контурам, убирают шумы и т.п.
Хорошим сравнением для понимания, как мне кажется, будет аналогия, как мы учим детей узнавать, например, волка. Волки ведь бывают разные: в зоопарке они одни, а в мультфильмах и сказках совсем другие. Волк из «Ну, погоди!» очень сильно отличается от волка из сказки про семерых козлят, ну и тем более от волка на фотографиях живой дикой природы. Если мы встретим ростовую куклу или пойдем в театр на детский спектакль, то это будет уже другой волк. Тем не менее через какое-то время ребенок начинает узнавать волка. Как же это происходит?
Первое: мы учим ребенка находить на наблюдаемой сцене животное, то есть объект. Для этого мы тыкаем пальцем и говорим: «Смотри — волк». Или: «Смотри — заяц». Такая идентификация и является первой задачей нейросети. Дальше мы обучаем ребенка на разных изображениях определять волка; если ребенок угадывает, то мы его хвалим (этап обучения). Но иногда картинок для обучения нам не хватает и тогда мы можем нарисовать волка сами, слепить его из пластилина, показать новый мультик. В машинном обучении это называется «синтетическая генерация данных», необходимая для расширения обучающей выборки. Ребенок должен узнавать волка даже в том случае, если он спрятался за деревом и когда он лежит в чепчике и очках в кровати бабушки, которую только что съел. После того как мы окончательно поняли, что ребенок узнает волка в 90-95% случаев, мы уже не говорим ребенку: «Смотри — волк», так как знаем, что он может найти волка на картинке и его безошибочно распознать. Знания ребенка проверяются на новых книжках, и на этом процесс обучения заканчивается.
А теперь вернемся в 2010 г. В 2010 г. появилась база ImageNet, содержащая 15 млн изображений в 22 тыс. категорий. Эта была достаточная выборка для обучения нейросетей.
В 2012 г. Крижевски и Хинтон для вычислений в нейронной сети решили использовать ресурсы графических процессоров (видеокарт). Технология глубокого обучения с ускорением на GPU (графический процессор) вообще в корне поменяла подход к разработке программного обеспечения. Раньше ПО создавали программисты и они же писали коды для алгоритмов. Теперь машинные алгоритмы обучаются сами на многочисленных примерах из жизни, таким образом программа улучшает себя сама. Самое главное, существенно сократилось время обучения сети. Ведь мы не можем ждать год или два (время, необходимое для узнавания волка ребенком), пока наша нейросеть обучится.
Сверточная нейросеть
Очень полезным инструментом для видеоанализа оказалась сверточная нейросеть. Сверточные нейронные сети обеспечивают частичную устойчивость к изменениям масштаба, смещениям, поворотам, смене ракурса и прочим искажениям в изображениях. Сейчас в анализе видео- и фотоизображений в основном используются такие сети.
Появление множества библиотек и инструментов, которые облегчают работу программистов с нейросетью, способствовали бурному росту глубинного обучения на основе нейросетей и дошли до отрасли технических систем безопасности. В принципе, любой желающий может взять готовую нейросеть и доработать ею под свои нужды.
Масштабные эксперименты и проекты
Самым известным и масштабным экспериментом с работой искусственного интеллекта по обработке изображений стал опыт Google в распознавании кошек на видео YouTube. Как и в примере с волком, изначально самообучаемая нейросеть не знала о существовании кошек, но после просмотра 10 млн случайных кадров с YouTube в нейросети сформировались нейроны, селективно реагирующие на присутствие кошачьих мордочек на изображениях.
Еще одним примером служит проект Facebook под названием DeepFace, алгоритм распознавания лиц на фотографиях, точность которого достигает 97%, независимо от качества фото, степени освещенности и расположения человека на снимке. Разработчики обучали свой алгоритм, используя 4 тыс. фотографий из альбомов 4 млн человек.
Необходимые инструменты для полноценного использования.
Но нейросеть нельзя назвать универсальным инструментом. В ее обучении и использовании есть определенные сложности.
Одно дело, если ребенок сможет определить волка, найдя его среди овец (только если волк не будет в овечьей шкуре). А если это будет большая лохматая собака, бегущая по улице? Или, наоборот, некрупный степной волк размером с обычную собаку? Не всякий взрослый найдет отличия между таким хищником и домашним питомцем. Для полноценного обучения нейросети требуется:
- Большая и разнообразная выборка, при этом данные для обучения должны быть репрезентативными. Чем больше данных для обучения, тем умнее нейросеть.
- Подготовка данных для обучения и разметка данных. Для этого частично используется автоматизация: использование больших, уже натренированных сетей для разметки или алгоритмов видеоаналитики, работающих по другому принципу, например детекции движения.
- Аугментация данных: предварительная подготовка данных перед обучением (поворот на случайный угол, изменение баланса белого, яркости, перемещение, масштабирование) для того, чтобы сеть научилась определять объекты, как они встречаются «в жизни».
- Выбор конкретного набора алгоритмов, то есть определение принципа работы каждого слоя нейросети и его взаимодействия с соседними слоями.
- Тренировка и перетренировка сети.
- Своевременность завершения процесса обучения. Нейросеть нельзя обучать «на ходу»: такая практика является рискованной, так как сеть может переобучиться или подстроиться под самые последние поступившие данные, потеряв при этом наработанную и «утвержденную» до этого логики
Признаки и закономерности
Не стоит стремится применять нейросеть во всех случаях. Например, для подсчета посетителей отлично подходят классические методы детекции, дающие высокую степень точности. А вот там, где нельзя заранее сформулировать какие-то четкие признаки объекта, нейросеть подойдет как нельзя лучше (например, детекция дыма и огня), ведь она сама на основании данных будет устанавливать признаки и закономерности. Правда, в отличие от запрограммированных человеком алгоритмов, эти признаки и закономерности будут находиться глубоко на ее дне, недоступные для понимания пользователей. Некоторых это пугает: даже обращаясь к врачу, мы должны понимать, о чем он говорит и по каким признакам ставит нам диагноз. Но в последнее время ведутся разработки, направленные на перевод машинного языка на «человеческий», чтобы нейросеть могла объяснить, какие критерии она посчитала важными, и уже человек будет в дальнейшем решать, права она или нет и, если что, расставлять для сети приоритеты.
1. В каких областях целесообразно применение нейросетей?
Искусственные нейронные сети применимы практически во всех областях, использующих видеонаблюдение. Как и другие методы машинного зрения, нейросети используются для извлечения из потока изображений информации о наблюдаемой сцене и присутствующих на ней объектах.
Контроль работы персонала магазина и анализ поведения посетителей. Например, сбор информации о количестве посетителей, их поле и возрасте, длине очередей, времени обслуживания. Выявление наиболее посещаемых мест, определение особых клиентов, контроль заполненности полок и правильности расстановки на ней товаров, выявление потенциально мошеннических операций кассиров. Появляется возможность контроля времени реакции консультантов на появление в магазине посетителя.
Определение статистических характеристик транспортных потоков, контроль соблюдения правил парковки, подсчет количества пассажиров для контроля оплаты проезда.
Определение поз людей, нетипичных для помещений с банкоматами:
- сидящий человек – потенциально попытка взлома банкомата;
- лежащий человек – использование помещения для ночлега;
- поднятые руки – потенциально ограбление посетителей.
Определение позы: вскинутые вперед руки для стрельбы (особенно актуально для школ в США), обнаружение лежащего человека. Обнаружение оставленных предметов с возможностью выделения предметов определенного типа.
Определение появления людей в опасных зонах при наличии большого количества визуальных помех (работающая техника, сложные погодные условия), контроль использования спецодежды и соблюдения техники безопасности. Контроль соблюдения технологического процесса, контроль качества.
Обнаружение лесных пожаров по поднимающемуся дыму.
Работа с видеоархивом
Поиск похожих объектов – например, людей или автомобилей. Позволяет выделить объект на видео или загрузить в систему фотографию и найти все видеозаписи, на которых присутствуют похожие объекты.
2. Какие модули/платформы для работы с нейросетями вам известны?
Для обучения нейросетей мы используем открытый пакет Caffe. Для применения нейросетей (inference) – пакет Caffe и оптимизированный для устройств компании Intel пакет OpenVINO (поддерживает CPU, встроенный GPU, специализированные USB-устройства, устройства FPGA). Планируем также использовать пакет TensorRT компании NVidia, оптимизированный для ее устройств. До недавнего времени его использование сдерживалось отсутствием версии для ОС Windows.
4. С какими сложностями вы сталкиваетесь при обучении нейросетей?
Каждый этап разработки искусственной нейронной сети сопряжен со своими сложностями:
- Подбор топологии сети (типов и взаимосвязей слоёв сети) – наиболее интеллектуально ёмкий этап. В нашей индустрии чаще всего сводится к адаптации топологий от исследовательских команд к реалиям предметной области.
- Сбор данных – может быть проблематичным, если необходимое событие редкое или сложно воспроизводится. Например, лесной пожар в разных условиях наблюдения.
- Подготовка обучающей выборки (разметка) – очень трудоемкий процесс, требующий высокой аккуратности. Для некоторых топологий затраты времени составляют порядка 30 минут на разметку 1 минуты исходного видео. Во многом именно этот этап определяет успешность обучения сети и дальнейшее качество её работы.
- Вычислительные мощности – для обучения нейронной сети требуется специализированное ПО (обычно под управлением ОС Linux) и специализированное оборудование. Например, мы используем несколько серверов с несколькими мощными видеокартами. И даже в этом случае обучение может занимать несколько суток.
5. Как нейросети изменят наш мир? Что ждать от этой технологии через 5 лет?
Многие виды деятельности, которые сейчас считаются прерогативой человека, будут автоматизированы. В том числе работа операторов видеонаблюдения. В статье, опубликованной в четвертом номере журнала «Системы безопасности» за прошлый год, я давал приблизительный прогноз развития нейросетевых технологий на рынке видеонаблюдения. С тех пор прошло полгода и пока создается впечатление, что события развиваются быстрее прогноза. Взрывное развитие сдерживается только отсутствием доступного оборудования для использования нейросетей. Но ситуация меняется – в игру за рынок такого оборудования активно вступают разные компаний. Например, Intel, планирующая в очередном поколении процессоров поддержать специальные инструкции для ускорения нейросетей, и HiSilicon, уже выпустившая SoC для видеокамер, содержащий нейросетевой ускоритель.
1. В каких областях целесообразно применение нейросетей?
Нейронные сети успешно решают задачи в тех случаях, когда для достижения таких же результатов классическими видеоаналитическими методами требуется гораздо большее количество ресурсов.
Например, при распознавании автомобильных номеров трекер на основе классических алгоритмов видеоаналитики находит в кадре любые наборы символов, похожие на автомобильные номера, и пытается их распознать. Классический детектор не позволяет с достаточной степенью надежности определять номера с малым количеством символов. Также огромное многообразие надписей на контейнерах и грузовиках мешает корректно находить номер. В этих случаях нейросетевой детектор успешно решает задачу. После того как мы обучили нейросетевой локализатор находить номерную пластину в кадре и отсеивать лишнее, мы добились значительно более высокой точности распознавания номеров. Модуль локализации корректно находит номерную пластину в кадре, исключая прочие надписи. Нейросетевой локализатор успешно работает там, где объекты нужного типа «перекрывают» друг друга в кадре или присутствует большое количество визуальных помех.
Другой пример — трекинг людей на пешеходном переходе. Нейросетевой детектор, обученный на очень большой выборке, предназначенный для детекции пешеходов на «зебре» позволяет с высокой точностью детектировать людей. При этом он крайне устойчив к колебаниям внешней среды, таким как освещение, погодные условия, «перекрытие» другими объектами и помехи.
2. Какие модули/платформы для работы с нейросетями вам известны.
Мы используем OpenVINO, Caffe, Caffe2, Tiny-dnn, TensorFlow.
- OpenVINO предлагает качественно более высокий уровень производительности на Intel CPU, запуск разнообразных моделей нейросетей на Intel HDGrphics, поддержку обученных моделей из разных фреймворков.
- Из преимуществ Caffe — обучение моделей на основе SSD, Faster R-CNN, высокая производительность на NVIDIA GPU, из минусов отмечу неудобство работы в Windows и низкую производительность на CPU. Плюсы Caffe2 – обучение моделей на основе Faster R-CNN и Mask R-CNN, высокая производительность на NVIDIA GPU, удобство работы в Windows. Минус – медленная работа на CPU.
- TensorFlow: из преимуществ – обучение моделей на основе SSD, Faster R-CNN и Mask R-CNN (на NVIDIA GPU), из недостатков выделю технические неудобства по настройке размера входного изображения.
- В Tiny-dnn из преимуществ – минимализм и портируемость, и, как следствие, – отсутствие гибкости.
3. Какие методы используются для обучения нейросети?
Предположим, перед нами стоит задача узнавать о наличии припаркованного автомобиля или об образовавшемся заторе в зоне посадки/высадки из транспортного средства в аэропорту. Сложность заключается в том, что считать количество машин и отслеживать траекторию перемещения каждой нужно на многополосном участке с камер, расположенных на крыше многоэтажного терминала аэропорта. Система должна работать в меняющихся условиях освещенности при любой погоде. Решением этой задачи будет трекинг на нейросетях.
На основе наработанного опыта и анализа научных работ выбираем тип нейросети. Далее оцениваем фреймворк на перспективность использования для решения поставленной задачи и определяем материал, на котором будет проходить обучение. В процессе обучения анализируем поведение нейросети, вносим изменения в выборку, архитектуру, проводим несколько итераций до достижения нужного результата. Следить за поведением нейросети и менять наборы параметров, чтобы получить результат высокой точности, помогают разносторонний опыт специалистов в программировании и решении практических задач в нейросетевой разработке. Разработчики высокого уровня могут по выходам промежуточных слоев целенаправленно вносить изменения в алгоритм обучения, архитектуру и ряд других параметров и быстрее добиваться нужного результата.
4. С какими сложностями вы сталкиваетесь при обучении нейросетей? Как решаются эти вопросы?
Опыт последних нескольких лет позволил сформировать понимание как действовать для решения той или иной задачи.
Чтобы обучить нейронную сеть нужно собрать и разметить огромное количество данных. Сбор данных, пожалуй, одна из самых затратных задач в нейросетевой разработке. Обучающая выборка должна максимально разносторонне представлять целевой объект. Сеть нужно обучать на множестве изображений с вариантами погодных условий, угла и дистанции съемки, освещенности и других параметров. Где взять такое разнообразие? В нашем распоряжении огромная база для обучения: у компании более 100 тыс. внедрений по всему миру. Кроме того, практикуем сбор данных под целевую задачу, организуя фотосъемку нужных для обучения объектов.
Моделям машинного обучения нужно большое число размеченных данных. Разметка данных — длительный и трудоемкий процесс. На каждом изображении нужно вручную обвести границы объекта. Чем точнее мы выделим границы номерной пластины автомобильного номера, тем выше будет качество алгоритма. Соответственно размечать нужно с точностью до пикселей. Как организовать разметку данных и проконтролировать её корректность, когда речь идет о десятках и сотнях тысяч изображений? Мы используем Computer Vision Annotation Tool – инструмент с открытым исходным кодом для разметки цифровых изображений и видео. Сервис поддерживает разные типы и форматы разметки и многократно ее ускоряет.
Анализ поведения нейросети с помощью стандартных инструментов в фреймворках и наших внутренних средств визуализации помогает проводить регулировку обучающего процесса. Кроме того, стандартные подходы к тестированию не всегда соответствуют практическим задачам. В результате мы выработали собственные подходы из средств программной реализации для тестирования нейросетей.
1. В каких областях целесообразно применение нейросетей?
Порой нейросети находят применение в самых неожиданных областях. Необычный свежий пример — анализ корректности юридических документов. Не так давно даже прошло соревнование нейросети с американскими юристами, в котором нейросеть одержала победу. Однако, на мой взгляд, целесообразнее всего применять нейросети и искусственный интеллект там, где требуется монотонное повторении одних и тех же операций, монотонный труд. Если говорить о видеонаблюдении, которым занимается Ivideon, огромный потенциал нейросетей используется для анализа видео. Просмотр многочасовых видеозаписей — утомительное занятие, поэтому человеческий фактор здесь может играть решающую, а лучше сказать — критическую, роль. Нейросети эффективно решают эту проблему.
2. Какие модули/платформы для работы с нейросетями вам известны.
Есть множество библиотек, которые облегчают работу программистов с нейросетями. Для языка Python это TensorFlow, Keras, Pytorch. Для С++ используется Caffe.
3. Какие методы используются для обучения нейросети?
Пример из моей практики — метод обучения с «учителем», при котором используются размеченные данные для тренировки сети.
4. С какими сложностями вы сталкиваетесь при обучении нейросетей?
1. Подготовка данных для обучения и разметка данных. Для этого частично используется автоматизация: использование больших уже натренированных сетей для разметки или алгоритмов видеоаналитики, работающих по другому принципу, например, детекция движения.
2. Аугментация данных: предварительная подготовка данных перед обучением (поворот на случайный угол, изменение баланса белого, яркости, перемещение, масштабирование).
3. Перетренировка сети. Для решения этой проблемы анализируются результаты работы нейросети на тестовом наборе данных на всем этапе обучения.
4. Ускорение работы сети. Для ускорения сети производится уменьшение количества вычислений на основе анализа значимости её нейронов (Pruning).
5. Как нейросети изменят наш мир? Что ждать от этой технологии через 5 лет?
Не очень люблю фантазировать, однако, что касается видеонаблюдения, применение нейросетей, несомненно, повысит качество и существенно расширит спектр предоставляемых услуг.
1. В каких областях целесообразно применение нейросетей?
Нейросети переживают настоящий бум. Исследователи занимаются искусственными нейронными сетями достаточно долго, не менее 70 лет, но огромный шаг вперед в развитии архитектуры искусственных нейросетей был сделан примерно в 2012-2015 годах. Нейросети стали значительно экономичнее в использовании своих параметров, возникла волшебная модель под названием «сверточная нейросеть» (кто о ней не слышал?). Такие нейросети обладают замечательной способностью самостоятельно находить в данных те признаки, с помощью которых можно наилучшим образом решить поставленную перед ними задачу, например, отличить один объект на изображении от другого. Другой популярный термин – “глубокое обучение” говорит нам о том, что современные нейросети имеют большое (иногда очень большое – более сотни) число слоев, что позволяет им находить решения для более сложных данных. Почти все современные нейросетевые модели – это глубокие свёрточные нейросети.
Всё в это привело к такому значительному расширению диапазона задач, которые можно успешно решать с помощью нейросетей, что и сам термин “искусственный интеллект” заиграл новыми красками.
В первую очередь штурму подверглись разнообразные задачи обработки изображений и анализа видеоданных: детектирование различных объектов на изображении и их классификация (эти задачи тесно связаны). Сюда относятся задачи обнаружения и распознавания лиц и автомобильных номеров, поиск и определение местоположения людей и других объектов в кадре, обнаружение огня, дыма, воды там, где их не должно быть, и т.д. Нейросети могут предсказывать последовательности кадров (а также временные ряды других данных). Эти задачи из области анализа изображений могут решаться в продукте как по-отдельности, так и в сложных комбинациях, необходимых для решения каких-то еще более сложных задач, например, обеспечения работы автопилота беспилотного автомобиля.
Другой большой класс задач, где нейросети успешно применяются – обработка текстов на естественном языке. Это всевозможные задачи классификации текстов (например, классификация отзывов на положительные и отрицательные), машинный перевод, и, наконец, чат-боты и таск-боты – программы, которые сейчас в состоянии заменить, например, продавцов билетов.
Также неросети применяются в задачах анализа научных данных, в играх, в финансах для оценки клиентов и всевозможных рисков и во многих других областях. В общем, свёрточные нейросети хорошо работают с теми данными, в которых есть корреляция по измерениям (изображения, звук, тексты, временные ряды). Там где её нет, например, разнородные данные о клиенте – лучше применить простую полносвязную сеть или вообще другую модель классификатора.
Взрывному росту сложности и количества задач, решаемых при помоши нейронных сетей, очень способствует то, что сейчас в распоряжении исследователей и разработчиков имеется огромное количество инструментов, позволяющих быстро создать (или взять готовую), обучить, протестировать и развернуть нейросеть любой сложности. Одни из них могут являться надстройками над другими, так что прямое сравнение всех со всеми не очень уместно.
2. Какие модули/платформы для работы с нейросетями вам известны.
- В настоящее время самыми популярными и в то же время активно развивающимися являются Keras, PyTorch и Tensorflow.
- Keras не является самостоятельным, требует наличия более низкоуровневой нейросетевой библиотеки в качестве бэкенда (например, Tensorflow), для него доступна документация с большим количеством примеров, накоплено огромное количество кода, который можно переиспользовать, у него более компактный и простой API, полученные модели достаточно удобно разворачивать и использовать.
- PyTorch является менее высокоуровневым фреймворком, характеризуется большей гибкостью и богатством возможностей API, более развитыми средствами отладки, наличием огромного сообщества пользователей.
- Библиотека Tensorflow от компании Google является самым низкоуровневым, мощным и популярным инструментом среди перечисленных. Её можно как использовать в составе Keras (где она может быть полностью скрыта от разработчика), так и самостоятельно. Но за возможности нужно залпатить временем на изучение, так как порог вхождения у неё определенно выше, чем у остальных.
Кроме инструментов современным разработчикам доступны и готовые нейросети, уже обученные, например, для решения задач классификации изображений и находящиеся в открытом доступе. Их вполне можно использовать для решения своих задач, взяв за основу как инструмент, так как их можно дообучить классифицировать именно те объекты, которые нужны вам, а хорошие признаки из изображений они выделять уже умеют. Однако в этой области доводилось встречать и злоупотребления. Например, попытку неких самонадеянных разработчиков продать известную нейросеть YOLOv2, находящуся в открытом доступе, в качестве собственного готового решения для обнаружения разнообразных объектов на видео. Надо помнить, что это всего лишь инструмент, который вряд ли будет хорошо работать в реальных сложных уловиях.
4. С какими сложностями вы сталкиваетесь при обучении нейросетей?
Можно ли считать, что нейронные сети развились до уровня, когда любой человек может легко решить любую сложную задачу, взяв готовую модель, данные, и запустив обучение? Скорее всего, нет. Можно легко получить хорошее решение для простых случаев, и намного сложнее выжать необходимую точность в сложных реальных условиях работы. Проблема кроется в том, что какая бы сложная модель нейросети не использовалась – это по-прежнему всего лишь математическая функция, хорошо аппроксимирующая ваши данные. Нейросети замечательно научились угадывать ответы в сложных задачах. Но они всегда умеют только то, чему вы их учите.
Представьте, что вы собираетесь обучить нейросеть распознавать лица, то есть отличать изображение лица одного человека от изображения лица другого. В обучающей выборке у каждого человека несколько фотографий и, допустим, так получилось, что люди, носящие очки всегда или почти всегда изображены в очках. Чему обучится нейросеть? Конечно тому, что очки – это неотъемлимая часть лица этих людей. Если вдруг он затем снимет очки перед камерой, система с вероятностью, близкой к единице, посчитает его другим человеком.
Так что обучение – это всё еще опыт исследователя и глубокое понимание возможностей машинного обучения, несмотря на то, что процесс обучения – это всего лишь подгонка функции, реализуемой нейросетью, под обучающие данные путем подбора параметров этой функции. В этом плане мало что изменилось за 70 лет и это всё еще очень мало похоже на то, как обучается человеческий мозг. Может, в этой области и нужно ждать следующего революционного прорыва?
5. Как нейросети изменят наш мир? Что ждать от этой технологии через 5 лет?
После нескольких лет бурного развития нейросетевых технологий, начавшегося примерно в 2012 году, нейросети взяли некоторую паузу. Сейчас мы находимся на этапе осмысления возможностей и поиска задач, которые еще можно решить. Когда возможностей перестанет хватать, неизбежно последует новый прорыв, и рано или поздно мы приблизимся к сильному искусственному интеллекту. Когда это произойдёт? 60 лет назад думали, что через 10 лет. Может быть, всё еще через 10 лет?
1. В каких областях целесообразно применение нейросетей?
Нейронные сети находят применение практически во всех областях деятельности человека – от автоматизации технологических операций на производстве до автопилотов автомобилей и искусства. Во многих областях нейронные сети уже превзошли человека (распознавание текста для узких задач, классификация изображений – конкурс ImageNet, программа AlphaGo, использующая нейронные сети, в 2020 году выиграла матч у одного из сильнейших игроков в истории Go). Можно выделить следующие популярные области применения нейронных сетей: анализ изображений, анализ текста, распознавание речи рекомендательные системы, поисковые системы.
2. Какие модули/платформы для работы с нейросетями вам известны.
Для обучения нейронной сети необходимы 3 составляющие — обучающие данные, специализированное программное и аппаратное обеспечение.
Обучающих данных требуется очень много — десятки тысяч–миллионы объектов.
Для подготовки (разметки) обучающих данных разработан ряд инструментов: LabelMe – бесплатная утилита от MIT. Платные сервисы для разметки данных: Prodi.gy, Scale.ai, Supervise.ly. Краудсорсинговые сервисы: Яндекс.Толока, Amazon Mechanical Turk.
Для обучения нейронных сетей наиболее популярна связка языка Python и одной из библиотек для машинного обучения: Tensorflow, Keras, Caffe, PyTorch.
Обучение нейронных сетей связано с огромным объемом обучающих данных и как следствие большим объемом вычислений. Для их ускорения используются графические видеокарты — GPU (самая популярная модель GeForce GTX 1080 Ti).
При отсутствии устройства GPU можно воспользоваться платными облачными сервисами с ускорением вычислений на GPU: Amazon Web Services, IBM Cloud, Microsoft Azure или Google Cloud (сервера с тензорными процессорами Google TPU).
3. Какие методы используются для обучения нейросети?
Наиболее распространенным методом обучения нейронных сетей является метод обратного распространения ошибки и его вариации. Использование библиотек для машинного обучения значительно снизило порог входа в область машинного обучения. Библиотеки экономят время разработки и предоставляют уже готовые реализации нейронных сетей и методов их обучения, исключая тем самым наиболее трудные этапы разработки. Многие библиотеки машинного обучения бесплатны и доступны с открытым исходным кодом, что обусловило существенный прогресс в области машинного обучения в последние годы.
В открытом доступе доступен зоопарк обученных нейронных сетей для разного рода задач. Сети, обеспечивающие впечатляющие результаты как правило обучены на выборках, содержащих миллионы объектов и повторить их обучение на обычных компьютерах часто не представляется возможным. Однако, обученную сеть можно адаптировать к решению вашей задачи, используя технологию переноса обучения (Transfer Learning) и ваш небольшой набор данных.
4. C какими сложностями вы сталкиваетесь при обучении нейросетей? Как решаются эти вопросы?
Подготовка обучающей выборки – трудоемкий процесс. Для увеличения размера выборки используют аугументацию данных — создание дополнительных обучающих данных из имеющихся, например, для изображений это можно сделать путем их преобразований и искажений. Существующая выборка должна максимально полно представлять все многообразие входных данных.
В реальных задачах данные обычно неравномерно распределены по классам, что может представлять проблему при обучении нейронной сети. Простейшим решением этой проблемы является дублирование примеров в классах с малым количеством примеров.
Этапы выбора архитектуры нейронной сети, способа нормализации данных, параметров обучения нейронной сети выполняются вручную на основе накопленного опыта.
В процессе обучения полезно выполнять визуализацию, чтобы контролировать эффективность обучения.
Чтобы быть уверенным, что обученная сеть будет хорошо работать на новых данных, обычно выборку делят на обучающую, тестовую и валидационную. На обучающей происходит обучение нейронной сети. По тестовой выборке (примеры из которой не используются в обучении) производят оценку адекватности работы нейронной сети и подбор параметров обучения. Валидационная выборка используется для финальной оценки обученной сети.
Обучение нейронной сети занимают очень много времени. Обученная же нейронная сеть работает довольно быстро, но обычно дольше классических алгоритмов анализа изображений.
5. Как нейросети изменят наш мир? Что ждать от этой технологии через 5 лет?
Прорыв в применении нейронных сетей стал возможен благодаря появлению достаточно больших выборок обучающих данных (ImageNet – 21 млн. изображений) и возросшим вычислительным возможностям, позволяющим обработать такой объем данных. Немаловажную роль также сыграли предоставление в открытый доступ библиотек машинного обучения мировыми лидерами IT-индустрии. Дешевый сбор и анализ больших данных с помощью сенсорных сетей может в корне изменить управление многими отраслями экономики. Большие открытые данные и международный интеллект — основа прогресса в области анализа данных. Следующие прорывы следует ожидать от накопления и изучения новых больших данных — переход к пожизненному хранению персональных медицинских данных каждого человека и улучшение постановки диагноза на основе их анализа. Похожая задача — накопление персональной информации об образовании, достижениях, интересах и способностях каждого человека с раннего детства. Технологии социальной инженерии и анализа больших данных можно направить на выявление талантов, персонализацию образовательных программ, трудоустройство и формирование коллективов под проекты. Это автоматизированная биржа труда, которая имеет огромный потенциал и способна изменить облик общества.
1. В каких областях целесообразно применение нейросетей?
Везде, где есть данные и есть необходимость их анализировать и обрабатывать, будь то распознавание изображений, синтез контента, управление роботом, перевод одного типа данных в другой, анализ и принятие решений, прогнозирование и т.д.
Процессоры NVIDIA для центров обработки данных, такие как Tesla V100 и T4, могут значительно ускорить практически все виды нейронных сетей. От сверточных нейронных сетей (CNN) для изображений и видео до рекуррентных нейронных сетей (RNN) для обработки естественного языка и нейронных коллаборативных фильтров (NCF) для рекомендательных механизмов. Платформа центра обработки данных NVIDIA ускоряет все современные платформы глубокого обучения.
Технология компьютерного зрения служит мостом между миром визуальной информации и миром интеллектуального анализа данных. Так как изображения и видео занимают существенную роль в современном информационном пространстве, необходимо обладать инструментом для обработки данных такого типа. Зачастую необходимо анализировать именно содержимое в семантическом смысле: что изображено на этой картинке, какие там присутствуют объекты и где они находятся, какие взаимосвязи между этими объектами и т.д. Точно такой же способ анализа изображений необходим для обеспечения зрения роботам и навигаторам беспилотных автомобилей, которым нужно «видеть» мир, с которым они взаимодействуют.
2. Какие модули/платформы для работы с нейросетями вам известны.
Независимо от того, вы разработчик, стартап или большая компания, вам нужны правильные инструменты для работы. Так как нейронные сети глубокого обучения становятся более сложными, время на тренировку существенно увеличивается, что выражается в снижении продуктивности и повышении затрат. Технология глубокого обучения NVIDIA и полный программный стек решения существенно ускоряют тренировку искусственного интеллекта. Среды глубокого обучения предлагают строительные блоки для проектирования, обучения и проверки правильности глубоких нейронных сетей через интерфейс программирования высокого уровня. Широко используемые платформы глубокого обучения, такие как Caffe2, Cognitive toolkit, MXNet, PyTorch, TensorFlow и другие, используют библиотеки с ускорением на GPU, такие как cuDNN и NCCL, для обеспечения высокопроизводительного обучения с ускорением на нескольких GPU.
Разработчики, исследователи и исследователи данных могут получить легкий доступ к оптимизированным контейнерам инфраструктуры глубокого обучения NVIDIA, производительность которых настроена и протестирована для графических процессоров NVIDIA. Это устраняет необходимость управления пакетами и зависимостями или создания структур глубокого обучения из исходного кода.
Графические процессоры NVIDIA для центров обработки данных доступны на всех основных облачных платформах (AWS, Google Cloud Platform, Azure, Oracle, IBM и многих других). Это означает значительные возможности ускорения для облачных компаний, а также отличную платформу для компаний, только начинающих работать с ИИ.
3. Какие методы используются для обучения нейросети?
Разработка приложений ИИ начинается с обучения глубоких нейронных сетей с большими наборами данных. Для исследователей ИИ и разработчиков приложений графические процессоры NVIDIA Volta и Turing, работающие на тензорных ядрах, обеспечивают вам быстрое обучению и более высокую производительность глубокого обучения. С включенными тензорными ядрами матрица смешанной точности FP32 и FP16 значительно увеличивает вашу пропускную способность и сокращает время обучения ИИ.
Для разработчиков приложений, интегрирующих глубокие нейронные сети в свои облачные или встроенные приложения, Deep Learning SDK предоставляет высокопроизводительные библиотеки, которые реализуют API-интерфейсы строительных блоков для реализации обучения и логического вывода непосредственно в своих приложениях. Благодаря единой модели программирования для всех платформ графических процессоров — от настольных компьютеров до центров обработки данных и встраиваемых устройств, разработчики могут начать разработку на своем настольном компьютере, масштабировать в облаке и развертывать на своих периферийных устройствах — с минимальными изменениями кода или без изменений.
Разработчики, исследователи и исследователи данных могут получить легкий доступ к оптимизированным контейнерам инфраструктуры глубокого обучения NVIDIA, производительность которых настроена и протестирована для графических процессоров NVIDIA. Это устраняет необходимость управления пакетами и зависимостями или создания структур глубокого обучения из исходного кода.
Например: задача компьютерного зрения является достаточно сложной. Цифровые изображения представляют собой огромные таблицы чисел (интенсивности в пикселях), в которых нетривиально «разглядеть» тот или иной объект. Для решения этой задачи необходим промежуточный этап – извлечение признаков.
Грубый пример: чтобы найти на фотографии котика, надо сначала найти его уши, глаза и т. д. Долгое время такого типа визуальные признаки были очень специализированными и конструировались вручную. С приходом в компьютерное зрение свёрточных нейросетей появилась возможность обучать эти признаки автоматически из данных.
4. С какими сложностями вы сталкиваетесь при обучении нейросетей? Как решаются эти вопросы?
Основные проблемы возникают с реальной возможностью внедрить ИИ в ту или иную отрасль. Зачастую всё сводится к одной из следующих проблем: недостаток данных для обучения, плохо формализованные и неструктурированные данные, которые тяжело подать на вход какому-либо алгоритму, или же просто для данной задачи (типа данных) еще не изобретена подходящая по эффективности архитектура нейронной сети. Именно из-за таких проблем некоторые идеи умирают, не успев развиться, и не становятся «общеизвестными».
Разработчикам, исследователям и бизнесу не нужно просто отличное оборудование. Им нужна надежная платформа. Платформа центра обработки данных NVIDIA обеспечивает наиболее конкурентоспособную эко-системную поддержку для ИИ, машинного обучения, глубокого обучения и высокопроизводительных вычислений (HPC) для научных и медицинских исследований. Кроме того, эти ресурсы платформы находятся в свободном доступе на NVIDIA GPU Cloud (NGC) в виде контейнеров, которые можно быстро развертывать и использовать как локально, так и в облаке.
5. Как нейросети изменят наш мир? Что ждать от этой технологии через 5 лет?
Мы наблюдаем невероятный уровень инноваций с тех пор, как в 2012 году началась глубокая революция в обучении. Архитектура нейронной сети продолжает развиваться, поскольку исследователи открывают новые подходы к решению сложных проблем, которые раньше считались невозможными. ИИ помогает быстрее выводить лекарственные препараты на рынок, помогает врачам быстрее диагностировать опасные для жизни заболевания,а также предоставляет потребителям бесчисленное количество услуг на основе ИИ: качественно улучшено распознавание речи в голосовых помощниках, улучшен машинный перевод, анализ комментариев пользователя во всевозможных сервисах, анализ изображений с камер на производстве для выявления аномалий и детектирования других важных вещей, распознавание лиц в банках и учреждениях, анализ пользователей и предсказание их поведения, робототехника и другие умные гаджеты. Прогресс в создании автономных транспортных средств также продвигается вперед, чтобы обеспечить безопасность и эффективное использование уже перегруженных дорог. В будущем применение ИИ во всех сферах нашей жизни станет просто рядовым событием, что позволит существенно уменьшить количество рутинной работы для человека и повысить качество продуктов и сервисов.
Искусственный интеллект в будущем станет универсальным массовым инструментом для решения самых разнообразных задач по работе с любыми типами данных. Практически вся работа, которую мы сегодня делаем в офисе, будет выполняться с помощью ИИ. Уже сейчас с помощью ИИ можно автоматизировать множество рутинных вещей. В будущем выполнение всё более интеллектуальных задач будут переходить под ответственность ИИ.
Нейронная сеть и распознавание
Как распознаёт образы человек – и как нейронная сеть
В нашей новой рубрике мы публикуем статьи, написанные учёными, работающими в области нейронаук. Сегодня наш автор — Екатерина Малахова, аспирантка сразу двух крупных нейроцентров мира: Института физиологии им. И.Павлова в России и RIKEN в Японии.
Мы уже публиковали интервью с самой Екатериной, а сейчас она расскажет нам об аналогиях в процессе обработки зрительного сигнала человеком и нейронными сетями, задаче распознавания образов и о том, почему нейронные сети представляют большой интерес для нейронауки.
От автора: Изучая процесс зрительного восприятия человека, я не могла обойти стороной достижения в разработке искусственных нейронных сетей.
И сейчас мои исследования включают в себя моделирование нейронных сетей для проведения сравнительного анализа их работы с работой зрительной системы человека.
Так мы и пришли к парадоксу “курицы и яйца”: первые сети были созданы на основе знаний об устройстве зрительной коры, а теперь мы изучаем их, чтобы понять как устроено наше зрение.
Получение зрительного сигнала — первоочередная, но не самая существенная стадия зрения. Давайте представим видеокамеру, фиксирующую происходящее на пленку: понять, что же происходило во время съёмки, можно будет только после просмотра видеоматериала человеком или дополнительной программной обработки.
Так же обстоят дела и со зрительной системой, в которой важнейшим условием для работы с поступающим сигналом является умение распознавать образы. Человек легко опознает объекты, несмотря на вариации в их размерах, положении и освещении. Эта способность называется инвариантным распознаванием образов. Она есть у людей, обезьян, крыс, цыплят и, по-видимому, у многих других животных.
С появлением глубоких нейронных сетей появилась такая способность и у машин.
Интересно то, что в нейронауке до сих пор нет понимания как именно реализуется инвариантное распознавание образов в коре головного мозга: работа с образами осуществляется на высоких уровнях иерархии зрительной системы, а происходящие там процессы не так просто соотнести с поступающим зрительным сигналом.
Распознавание образов человеком
На рис. 1 изображено иерархическое строение зрительной системы. На нижних уровнях изображение можно представить в виде матрицы пикселей.
В каждый нейрон здесь поступает информация с малой части зрительного поля и активация этого нейрона происходит в ответ на определенную ориентацию (наклон), частоту линий или цвет, вне зависимости от семантического содержания.
Охват зрительного поля у отдельно взятого нейрона здесь очень небольшой, то есть нейроны «видят» не все изображение целиком, а лишь его малую локальную часть.
С повышением иерархического уровня увеличивается охват зрительного поля, видимого отдельно взятым нейроном, и усложняется структура обрабатываемых им признаков, а это значит, что нейрон будет активироваться в ответ на более сложные формы — овалы, контуры объектов, лица.
Рис. 1. Слева: Иерархическое строение зрительной системы с прямым распространением сигнала: от сетчатки к латеральному коленчатому телу (LGN), далее к областям зрительной коры V1, V2, V4, и нижневисочной (IT) коре. Принятие решения на основании поступившего сигнала осуществляется в лобной коре.
По центру: Нейроны на нижних уровнях иерархии имеют маленькие рецептивные поля (обрабатывают сигнал с малой части изображения), в то время как нейроны в более высоких областях видят всё большую часть зрительного поля, аккумулируя сигналы с нижестоящих уровней.
Справа: Нижние уровни иерархии отвечают за распознавание базовых признаков изображений, таких как углы и линии. Нейроны высоких уровней собирают с нижележащих областей и кодируют информацию о более сложных признаках, таких как сложные формы, объекты и лица.
Изображение взято из “When crowding of crowding leads to uncrowding” by Manassi, M., Sayim, B., & Herzog, M. H. (2013). Journal of Vision, 13 (13), 10-10.
И если нам давно известно, какие параметры изображения обрабатываются нейронами на начальных уровнях, то пространство признаков, выделяемых нейронами нижневисочной коры на сегодняшний день активно изучается.
Например, в лаборатории в RIKEN, где я сейчас работаю над диссертацией, в 2013 году опубликовали карту регионов, «занимаемых» отдельными категориями объектов.
Но это лишь начальные шаги к пониманию механизмов работы с информацией на высоких уровнях зрительной системы.
Распознавание образов нейронными сетями
Теперь давайте посмотрим что же происходит в искусственных сетях, чем они так удивили ученых из области нейронаук, и как могут применяться в исследованиях зрительной системы человека.
Начиная с 2012 года, искусственные нейронные сети получили широкое распространение и практическое применение. Несмотря на то, что архитектура для подобных сетей была предложена еще в 1980 году К.
Фукушимой, вдохновлённым открытиями нобелевских лауреатов Дэвида Хьюбела и Торстена Визеля о строении зрительной системы, технологии позволили создавать глубокие свёрточные нейронные сети (Convolutional Neural Networks, CNNs) и обучать их на больших объемах данных сравнительно недавно. Высокая точность сетей в задачах детектирования, классификации и сегментации образов быстро вытеснила годами разрабатываемые алгоритмы компьютерного зрения.
В отличие от биологических, искусственные нейронные сети гораздо проще изучать. Были разработаны методы визуализации, позволяющие изобразить «идеальный» стимул для каждого нейрона, а также выбрать из предложенных изображений, те, которые вызывают максимальную активацию.
Когда удалось «заглянуть внутрь» сетей, удивительным оказалось их сходство с известными нам данными о работе зрительной системы человека: на нижних слоях, изображение пропускается через всё те же фильтры ориентации линий, цвета и частотности, хотя вручную параметры фильтров не настраивались — они сформировались естественно после просмотра сетью миллионов изображений.
Рис. 2. Архитектура слоев нейронной сети AlexNet. Обозначения слоев: Conv — convolutional, Pool — max-pooling, Norm — normalization.
Архитектура свёрточных нейронных сетей, как уже было упомянуто выше, первоначально создавалась на основе представлений о строении зрительной системы. Наиболее классический вариант архитектуры (см. рис. 2) — AlexNet — включает в себя Convolutional (сверточные), Pooling (объединяющие) и Fully-connected (полностью соединенные) слои.
Свёрточные слои обрабатывают изображение фильтрами небольшого размера. Каждый фильтр кодирует какой-либо графический признак в виде матрицы, например, если говорить о первом слое, это может быть наличие наклонной линии под определенным углом, цветового градиента и т.д.
Суть операции свёртки заключается в умножении изображения на фильтр (ядро) св—ртки. Так как размер фильтра существенно меньше размера изображения, он применяется последовательно с небольшим шагом ко всему изображению (рис. 3), а результат суммируется и записывается в аналогичную позицию выходного изображения.
Таким образом формируется карта активации, которая отражает соответствие данного изображения фильтру.
Рис. 3. Convolution: Пример применения фильтра 3×3 пикселя к бинарному изображению, размером 5×5 пикселей. В данном случае фильтр предполагает активацию в ответ на Х-образный паттерн, то есть учитываются только пиксели, находящиеся на обеих диагоналях фильтра.
После некоторых свёрточных слоев находятся pooling-слои, которые производят обобщение за счет выбора одного значения из заданного диапазона входного слоя. Чаще всего, это операция max-pooling, то есть выбирается только максимальное значение.
Таким образом, на данных слоях производится уменьшение размерности, что, с одной стороны, снижает вычислительную нагрузку, а с другой — делает работу сети более инвариантной к входящему сигналу, убирая незначительные различия в деталях изображения.
Рис. 4. Pooling: пример обобщения и уменьшения размерности: из определенного региона выбирается одно значение, области не перекрываются.
Каждый нейрон в fully-connected (полносвязном) слое соединен со всеми нейронами предыдущего слоя, получая, таким образом, сигнал со всего рецептивного поля, то есть, изображения целиком.
В архитектуре AlexNet также присутствуют слои нормализации, однако их влияние на результат оказалось минимальным, поэтому постепенно они перестали применяться.
Попробуем посмотреть что же находится внутри обученной нейросети и что происходит в процессе обработки ею отдельного изображения. Для примера я взяла нейронную сеть, обученную распознавать наличие лица на фотографии, то есть выполняющую бинарную классификацию.
Архитектура её соответствует архитектуре, изображённой на рис. 2. В качестве визуализации работы сети приводятся фильтры слоёв, карты их активаций и примеры изображений, вызывающий максимальный ответ в случайно выбранных нейронах слоя. Фильтры слоёв формируются в процессе обучения и не меняются после.
Карты активации же зависят от изображения, поданного в сеть на обработку.
Фильтры первого свёрточного слоя (рис. 5) выделяют простые признаки вроде цвета и наклона линии, они универсальны практически для всех сетей, работающих с изображениями, вне зависимости от выполняемой задачи. Изображения, вызывающие максимальную активацию в нейронах данного слоя, представляют из себя фрагменты небольшого размера, содержащие линии, углы, решетки и так далее.
Рис. 5. Первый свёрточный слой (conv1): a) фильтры слоя. b) карты активации выделенных фильтров. c) фрагменты изображений, вызывающих максимальную активацию отдельного нейрона слоя (для девяти случайно выбранных нейронов представлены 9 лучших фрагментов). d) оригинальное изображение, для которого строились карты активации.
На втором свёрточном слое (рис. 6) фильтры не выглядят настолько же легко интерпретируемыми, размер рецептивного поля увеличивается и изображения, подобранные для визуализации максимальной активации, содержат менее тривиальные формы.
Нейроны последующих сверточных слоев охватывают всё большую часть изображения и реагируют на всё более сложные формы объектов, вплоть до выделения различных категорий объектов.
Тем не менее, в указанных слоях сохраняется зависимость реакции нейрона от пространственного расположения признака, то есть, если рыжий кот в правом верхнем углу активирует определенный нейрон, то этот же самый кот в нижнем левом углу уже не вызовет в нем ответа.
И только в полносвязных слоях сети достигается инвариантное — независимое от положения и размера — распознавание образов.
Рис. 6. Второй свёрточный слой (conv2): a) фильтры слоя. b) карты активации выделенных фильтров. c) фрагменты изображений, вызывающих максимальную активацию отдельного нейрона слоя (для трех случайно выбранных нейронов представлены 9 лучших фрагментов). d) оригинальное изображение, для которого строились карты активации.
Каждый нейрон полносвязного слоя получает информацию от всех нейронов предыдущего слоя, что позволяет учитывать все возможные пространственные локации объектов. Для некоторых нейронов возможно определить признаки/объекты, выделяемые ими на изображениях, для других же это сделать довольно затруднительно (рис. 7).
Рис. 7. Изображения, наилучшим образом активирующие девять случайно выбранных нейронов первого полносвязного слоя (fc6).
Последний из полносвязных слоев содержит количество нейронов, равное количеству классов в исходной задаче классификации, т.е. в случае задачи детекции лица на изображении, этот будет состоять из двух нейронов: один, представляющий категорию «лица», другой — представляющий категорию «не лица» (рис. 8).
Рис. 8. Изображения, наилучшим образом активирующие нейроны последнего полносвязного слоя сети (fc8), обученной для задачи детекции лиц на изображениях. a) нейрон, отвечающий за категорию «не лица». b) нейрон, отвечающий за категорию «лица».
Таким образом, методы визуализации и анализа паттернов активации позволяют нам посмотреть на процессы, происходящие внутри искусственных нейронных сетей и сравнить их с нейрофизиологическими данными.
Так, например, было показано не только сходство начальных этапов обработки искусственных сетей с работой первичной зрительной корой, но также и возможность предсказывать ответ нейронов нижневисочной коры на основе активации искусственных нейронов более глубоких слоев.
Полного понимания того, как реализуется инвариантное распознавание образов пока нет ни для биологических, ни для искусственных сетей, но возможно, изучение последних, прольет свет на механизмы работы нашей зрительной системы.
Поиск объекта на изображении с помощью полносвёрточных нейронных сетей
Распознавание объектов на изображении с помощью алгоритмов машинного обучения решает многие задачи гораздо эффективнее, чем человеческое зрение.
Скажем, свёрточные нейронные сети нашли широкое применение в задачах классификации, детектирования и распознавания изображений.
Постепенно круг этих задач расширяется, поэтому не теряет актуальности разработка новых архитектур, слоёв сети и модификаций фреймворков.
В своих исследовательских проектах мы часто обращаемся к методам свёрточных нейронных сетей. В частности, в своём недавнем исследовании по распознаванию кассовых чеков на изображении мы использовали отдельный тип нейросетей – полносвёрточные нейронные сетей.
Сегодня мы расскажем об особенностях работы с полносвёрточными нейросетями и о том, каких результатов мы достигли.
Цель исследования – найти и выделить объект на изображении методом полносвёрточных нейронных сетей.
Исследование выполняется в рамках проекта по распознаванию кассовых чеков. Для достижения поставленной цели исследования требуется натренировать полносвёрточную нейросеть распознавать, где на фото находится объект – кассовый чек, а где фон.
В рамках исследования реализованы следующие стадии:
1. Изучение особенностей применения полносвёрточных нейронных сетей 2. Сравнение свёрточных и полносвёрточных нейросетей 3. Освоение архитектуры полносвёрточной нейронной сети 4. Препроцессинг
5. Тренировка сети на поиск нужного объекта
Реализация
1. Особенности применения полносвёрточных нейронных сетей
Полносвёрточные сети – это особый тип искусственных нейронных сетей, результатом работы которых является сегментированное изображение оригинала, где искомые элементы уже выделены требуемым образом.
Рис. 1. Пример работы полносвёрточной нейронной сети
Полносверточные нейронные сети используются для задач, в которых необходимо, например, определить форму и местоположение искомого объекта или нескольких объектов.
Подобные задачи проблематично решать с использованием простых свёрточных нейросетей.
Для общего понимания, почему и когда лучше использовать полносвёрточные сети вместо обычных свёрточных, необходимо сравнить указанные типы нейронных сетей.
2. Сравнение свёрточных и полносвёрточных нейронных сетей
Самым очевидным отличием полносвёрточных сетей от других нейросетей является конечный результат работы сети. Простые сверточные сети могут использоваться для классификации, определяя к какому классу принадлежит то или иное изображение, и для локализации объекта на изображении (регрессия).
В результате применения любого из этих методов выходными данными являются числа либо массивы чисел. Иначе говоря, мы можем получить информацию о изображении (при этом очень ограниченную), но не можем преобразовать его в необходимый нам вид.
Полносвёрточные нейронные сети на выходе выдают сегментированое изображение, соответствующее по размерности входному. Поэтому их второе название – сегментационные нейронные сети.
Сегментация – это объединение объектов в группы по общим признакам. Таким образом, мы получаем от сети намного больше информации, а достигнутый результат можем обработать простыми эвристическими методами.
3. Архитектура
Чтобы лучше понимать принцип работы полносвёрточных сетей и выяснить, для решения каких задач их можно использовать, важно изучить их общую архитектуру.
При проектировании свёрточных сетей в архитектуру могут добавляться разнообразные слои для повышения точности распознавания (drop out layer, local response normalization layer и т.д.).
Мы же рассмотрим лишь базовую архитектуру, которая практически неизменна и определяет работу полносвёрточной сети.
Основа работы полносвёрточных сетей – свёртка изображения. Ключевыми слоями являются свёрточные слои (convolution layer). В свёрточном слое указывается количество выходов со слоя, ядро свёртки, его шаг, размеры, отступ.
Операция свёртки проходит ядром по всему изображению, в результате мы получаем величину отклика на ядро свёртки в каждой точке изображения. Количество ядер каждого слоя свёртки равно произведению количества выходов со слоя на количество входных картинок.
Далее результаты проходят через следующий слой свёртки, получая значения уже для других ядер. К каждому свёрточному слою можно добавлять слои регуляризации или нормализации (в зависимости от выбора разработчика).
Прохождение изображений через многие свёрточные слои позволяет получить богатое разнообразие возможных интерпретаций изображения.
Пройдя через требуемое количество слоёв свёртки, изображение затем попадает в слой пулинга (pooling layer). Этот слой уменьшает размер входных изображений, не уменьшая их количества. Слой имеет ядро, которое движется подобно ядру свертки, вычисляя единственное значение для каждой области изображения.
Уменьшение изображения способствует более быстрой обработке сетью большего количества данных. Это позволяет добавлять в следующих свёрточных слоях большее количество выходов, а также повышает точность результатов.
Дело в том, что на уменьшенном изображении ядра свёртки того же размера способны захватывать большую область искомого объекта.
Последовательность: convolution/../../convolution/pooling (где количество convolutions layers определяется разработчиком) может повторяться несколько раз, вплоть до того, пока не будет достигнут минимальный размер изображения. Этот размер определяется экспериментально.
Рис. 2. Архитектура полносвёрточной сети
Для того чтобы выделенные объекты соответствовали оригинальному масштабу, уменьшенное изображение требуется вернуть к изначальному размеру. Слой upsample (upsample layer) выполняет увеличение изображения.
На каждый выход имеется два входных изображения: первое – это обработанная картинка с предыдущего слоя (это может быть convolution или pooling), второе – это картинка из pooling layer, количество выходов которого равны количеству входов соответствующего upsample, а также размеры выходной картинки pooling равны размеру входной картинки upsample.
Так мы получаем симметричную архитектуру относительно последнего pooling слоя и первого upsample слоя. Между слоями увеличения размеров изображения также помещаются свёрточные слои, но количество выходов с них постепенно уменьшается.
Последовательность upsample/convolution/../../convolution необходима, чтобы привести изображение к исходным размерам, при этом сократив количество возможных интерпретаций изображения до количества искомых групп объектов.
4. Препроцессинг – формирование датасета (набора данных) для создания модели архитектуры нейросети
Для реализации алгоритма полносвёрточной сети в своём исследовании мы используем фреймворк Caffe Segnet – это версия Caffe специально разработанная для полносвёрточных нейронных сетей.
В соответствии с целью нашего исследования необходимо натренировать сеть на поиск кассового чека. Для этого следует обеспечить достаточно большую выборку примеров изображений. Далее выборка должна быть поделена так, что каждому изображению соответствует маска.
Маска – это монохромное изображение, на котором каждая группа объектов определена определенным цветом от 0 до 255. Например, в нашем случае всего 2 группы – чек и фон. Фону присваивается цвет 0, а всей области чека – цвет 1. На рисунке ниже представлен пример пары изображение-маска, а для того чтобы увидеть помеченный чек, его значение цвета установлено в 255.
Рис. 3. Изображение для обучения сети и маска для него
Итак, создав достаточно большой датасет подобных изображений, мы переходим к реализации модели архитектуры нашей сети. Архитектура основывается на описанном ранее принципе работы сегментационных сетей.
5. Тренировка сети на поиск нужного объекта
Большой датасет изображений, который мы подготовили для обучения сети, удобнее формировать в виде двух директорий: оригинал и маска. Пусть каждая маска имеет такое же имя, как и изображение оригинала, тогда алгоритм поиска будет проще, если нужно будет отыскать пару оригинал/маска.
Далее необходимо добавить текстовый файл, содержащий пути к парам изображений, где каждая пара может быть задана как “путь/к/изображению/оригиналу” и “путь/к/изображению/маске”. Одна строка – одна пара.
Данный файл необходимо подавать в сеть, чтобы определить местоположение загружаемых тренировочных данных.
Рис. 4. Архитектура сети для задачи сегментации чека
Первым делом мы загружаем в сеть изображение и его маску.
Затем начинается итерация обучения – изображение проходит через все слои по порядку, а получившийся на выходе результат сравнивается с маской с помощью функции ошибки (loss function).
С каждой следующей итерацией веса сети в процессе обучения постепенно подгоняются к оптимальному значению, необходимому для точного решения поставленной задачи.
Когда весь цикл обучения сети завершен, начинаем тестирование, чтобы оценить точность распознавания. Тестирование нужно проводить на данных, которые не были в тренировочной выборке. Полученные на выходе сети изображения обрабатываются для более доступного глазу визуального представления и затем выдаются пользователю.
На выходе изображение имеет формат, где каждый пиксель представлен значением от 0.0 до 1.0 в зависимости от принадлежности к какой-либо группе искомых объектов. Поэтому необходимо привести изображение в одноканальное, серое изображение (от 0 до 255).
Затем, для лучшего визуального отображения, результат можно перевести в трёхканальное RGB-изображение, где каждому цветовому значению на сером изображении соответствует свой RGB-цвет.
Рис. 5. Примеры работы обученной сети
Заключение
В процессе решения задачи по поиску необходимого объекта мы изучили новую модель нейронных сетей – полносвёрточную нейронную сеть. В результате изучения сегментационной нейросети мы выявили наиболее ключевые моменты, которые следует учитывать, чтобы значительно повысить качество распознавания:
- Выборка изображений для тренировки должна быть как можно более полной и разнообразной
- Изображения выборки должны быть наиболее схожими с теми изображениями, которые ожидаемо будут подаваться во время работы сети
- Следует максимально точно выполнить разметку объектов
- При проектировании архитектуры не стоит сильно зацикливаться на каком-то одном варианте – нет универсальной модели архитектуры, которая бы работала хорошо при любой задаче
Мы собираемся продолжить наше исследование, чтобы улучшить качество полученных результатов и найти применение похожих моделей для решения новых задач. Попробуйте и вы реализовать эксперименты с полносвёрточными нейронными сетями и не стесняйтесь поделиться своим опытом. Мы будем рады услышать о ваших достижениях.
AlexNet — свёрточная нейронная сеть для классификации изображений
AlexNet — сверточная нейронная сеть, которая оказала большое влияние на развитие машинного обучения, в особенности — на алгоритмы компьютерного зрения. Сеть с большим отрывом выиграла конкурс по распознаванию изображений ImageNet LSVRC-2012 в 2012 году (с количеством ошибок 15,3% против 26,2% у второго места).
Архитектура AlexNet схожа с созданной Yann LeCum сетью LeNet. Однако у AlexNet больше фильтров на слое и вложенных сверточных слоев. Сеть включает в себя свертки, максимальное объединение, дропаут, аугментацию данных, функции активаций ReLU и стохастический градиентный спуск.
Особенности AlexNet
За счет этого уровень ошибок первого и пятого уровней снижаются до 0,4% и 0,3%, соответственно.
Датасет ImageNet
ImageNet — набор из 15 миллионов помеченных изображений с высоким разрешением, разделенных на 22 000 категорий. Изображения собраны в интернете и помечены вручную с помощью краудсорсинга Amazon’s Mechanical Turk.
Начиная с 2010 года проводится ежегодный конкурс ImageNet Large-Scale Visual Recognition Challenge (ILSVRC), являющийся частью Pascal Visual Object Challenge. В челлендже используется часть датасета ImageNet с 1000 изображений в каждой из 1000 категорий.
Всего получается 1,2 миллиона изображений для обучения, 50 000 изображений для проверки и 150 000 — для тестирования. ImageNet состоит из изображений с разным разрешением. Поэтому для конкурса их масштабируют до фиксированного разрешения 256 × 256.
Если изначально изображение было прямоугольным, то его обрезают до квадрата в центре изображения.
Архитектура
Архитектура сети приведена на рисунке 1. AlexNet содержит восемь слоев с весовыми коэффициентами. Первые пять из них сверточные, а остальные три — полносвязные. Выходные данные пропускаются через функцию потерь softmax, которая формирует распределение 1000 меток классов.
Сеть максимизирует многолинейную логистическую регрессию, что эквивалентно максимизации среднего по всем обучающим случаям логарифма вероятности правильной маркировки по распределению ожидания. Ядра второго, четвертого и пятого сверточных слоев связаны только с теми картами ядра в предыдущем слое, которые находятся на одном и том же графическом процессоре.
Ядра третьего сверточного слоя связаны со всеми картами ядер второго слоя. Нейроны в полносвязных слоях связаны со всеми нейронами предыдущего слоя.
Таким образом, AlexNet содержит 5 сверточных слоев и 3 полносвязных слоя. Relu применяется после каждого сверточного и полносвязного слоя. Дропаут применяется перед первым и вторым полносвязными слоями. Сеть содержит 62,3 миллиона параметров и затрачивает 1,1 миллиарда вычислений при прямом проходе. Сверточные слои, на которые приходится 6% всех параметров, производят 95% вычислений.
Обучение
AlexNet проходит 90 эпох. Обучение занимает 6 дней одновременно на двух графических процессорах Nvidia Geforce GTX 580, что является причиной того, что сеть разделена на две части.
Используется стохастический градиентный спуск со скоростью обучения 0,01, импульсом 0,9 и распадом весовых коэффициентов 0,0005. Скорость обучения делится на 10 после насыщения точности и снижается в 3 раза в течение обучения.
Схема обновления весовых коэффициентов w имеет вид:
где i — номер итерации, v — переменная импульса, а epsilon — скорость обучения. В ходе всего этапа обучения скорость обучения выбиралась равной для всех слоев и корректировалась вручную. Последующая эвристика заключалась в том, чтобы разделить скорость обучения на 10, когда количество ошибок при проверке переставало уменьшаться.
Примеры использования и реализация
Результаты показывают, что большая, глубокая сверточная нейронная сеть способна достигать рекордных результатов на очень сложных датасетах, используя только обучение с учителем.
Через год после публикации AlexNet все участники конкурса ImageNet стали использовать сверточные нейронные сети для решения задачи классификации. AlexNet была первой реализацией сверточных нейронных сетей и открыла новую эру исследований.
Сейчас реализовать AlexNet стало проще с помощью библиотек глубокого обучения: PyTorch, TensorFlow, Keras.
Результат
Сеть достигает следующего уровня ошибок первого и пятого уровней: 37,5% и 17,0%, соответственно.
Лучшая производительность, достигнутая в ходе конкурса ILSVRC-2010, составляла 47,1% и 28,2% при использовании подхода, в котором усредняются предсказания, полученные шестью моделями с разреженным кодированием, обученных на различных векторах свойств.
С тех пор достигнуты результаты: 45,7% и 25,7% при использовании подхода, в котором усредняются предсказания двух классификаторов, обучаемых на векторах Фишера. Результаты ILSVRC-2010 приведены в таблице 1.
Слева: восемь тестовых изображений ILSVRC-2010 и пять ярлыков, которые наиболее вероятны по мнению модели. Правильная метка записывается под каждым изображением, а вероятность показана красной полосой, если она находится в верхней пятерке. Справа: пять тестовых изображений ILSVRC-2010 в первом столбце. В остальных столбцах показаны шесть обучающих изображений.
Анализируем изображения с помощью нейронных сетей
В курсе “Глубокое обучение на Python” мы научились обучать нейронные сети для распознавания рукописных цифр и объектов из набора данных CIFAR-10. Давайте посмотрим, как применять эти нейронные сети для анализа своих изображений.
Распознавание рукописных цифр
Начнем с распознавания рукописных цифр. Читатели прислали мне несколько отсканированных картинок с рукописными цифрами. Вот одна из них:
Для распознавания рукописных цифр воспользуемся сверточной нейронной сетью.
Keras содержит специальный модуль для работы с изображениями, который называется image. С его помощью можно быстро загрузить изображение из файла и преобразовать его в массив numpy, который мы можем передать модели для распознавания:
import numpy as np
from keras.preprocessing import image # Загружаем изображение
img_path = ‘2.png’
img = image.load_img(img_path, target_size=(28, 28), grayscale=True) # Преобразуем изображением в массив numpy
x = image.img_to_array(img) # Инвертируем и нормализуем изображение
x = 255 – x
x /= 255
x = np.expand_dims(x, axis=0)
Загружаем из файла обученную сверточную нейронную сеть:
json_file = open(“mnist_model.json”, “r”)
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
loaded_model.load_weights(“mnist_model.h5”)
Компилируем модель перед использованием
loaded_model.compile(loss=”categorical_crossentropy”, optimizer=”adam”, metrics=[“accuracy”])
Теперь мы готовы к распознаванию цифры. Для распознавания вызываем метод модели predict:
prediction = loaded_model.predict(x)
Совет
Модель выдает массив из 10 значений в формате One Hot Encoding. Выбираем индекс максимального значения и печатаем его:
Распознавание объектов на изображениях
Давайте рассмотрим более сложную задачу – распознавание объектов на изображении. Будем использовать нейронную сеть, обученную на наборе данных CIFAR-10. Попробуем распознать картинку самолета, которую сеть не видела в процессе обучения:
Загружаем изображение в Keras:
import numpy as np
from keras.preprocessing import image img_path = ‘plane.jpg’
img = image.load_img(img_path, target_size=(32, 32))
В отличие от рукописных цифр, в этот раз изображение цветное и его размер 32х32, в соответствии с форматом CIFAR-10. Преобразуем картинку в массив numpy:
x = image.img_to_array(img)
x /= 255
x = np.expand_dims(x, axis=0)
Загружаем сеть, обученную на наборе данных CIFAR-10, и компилируем модель:
json_file = open(“cifar10_model.json”, “r”)
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
loaded_model.load_weights(“cifar10_model.h5”)
loaded_model.compile(loss=’categorical_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])
Запускаем распознавание объекта:
Для удобства вывода задаем список с названиями классов объектов:
Печатаем результат распознавания:
Как видим, нейронная сеть справилась с задачей, несмотря на то, что обучение проводилось на изображениях размером 32х32. Наше изображение пришлось уменьшить до этого размера, но сеть все равно распознала на картинке самолет.
Давайте попробуем дать нейронной сети более сложную задачу – распознать не фотографию объекта, а рисунок. Например, вот такой рисунок лошади:
Запускаем программу и получаем результат:
Нейронная сеть сумела распознать объект даже на рисунке, хотя мы обучали ее только на фотографиях!
Итоги
Мы научились применять нейронные сети для анализа любых изображений, а не только тех, которые входят в стандартные наборы данных для обучения. В Keras для этого есть класс image из модуля keras.preprocessing.
Попробуйте провести эксперименты со своими изображениями и пишите в комментариях, что у вас получилось.
Полезные ссылки
Применение нейронных сетей в распознавании рукописного текста
На сегодняшний день в современном мире активно развивается такая область искусственного интеллекта как нейронные сети. Актуальность разработок в области нейросетей обуславливается их широкими возможностями применения в самых различных областях.
Функционирование любой системы становится намного эффективнее при помощи решения задач на основе нейронных сетей.
Нейронные сети — это раздел искусственного интеллекта, в котором для обработки сигналов используются явления, аналогичные происходящим в нейронах живых существ.
Основная особенность искусственной нейронной сети состоит в параллельной обработке информации всеми звеньями. При достаточно большом количестве межнейронных связей это дает основание существенно ускорить процесс обработки информации.
В большинстве случаев преобразование сигналов в режиме реального времени приобретает все более распространенную форму.
В настоящее время известно довольно обширное число областей применения искусственных нейронных сетей, в которых человеческий интеллект малоэффективен, а аналитические вычисления достаточно трудоемки и физически неадекватны.Наиболее распространенные из них: финансы, экономика, производство, медицина, военная промышленность и авиация, энергетика, научные исследования, информационные технологии, искусственный интеллект и т. д.
На сегодняшний день существует огромное количество программного обеспечения, использующего возможности технологии искусственных нейронных сетей (ИНС). Существуют универсальные программы, решающие при помощи ИНС задачи от распознавания рукописного текста до решения задач прогнозирования.
На сегодня разработано множество систем, которые демонстрируют возможности искусственных нейронных сетей, например сети, способные представлять текст фонетически, распознавать рукописные буквы.
Рукописный текст был отличным средством коммуникации и документации на протяжении тысячи лет, но в последнее время оно все чаще заменяется вводом с клавиатуры. Но, тем не менее, данное средство остается самым простым и наиболее эффективным способом по времени преобразования человеческой мысли в передаваемую форму для большинства людей во всем мире.
Во времена подъема компьютерной эры, при использовании рукописного текста в вычислительных машинах было менее удобно использовать его в промышленных масштабах, но с ускоренным развитием информационных технологий, а также сенсорных устройств, более точных и быстрых камер, сканеров преобразование рукописного текста в данные понятные компьютеру стало актуальной задачей на сегодняшний день.
На данном этапе развития системы распознавания рукописного текста имеют все новые и новые горизонты для достижений в таких областях как машинный перевод, почтовые пересылки, проверки подписи, ведение повседневных заметок и т. д. Конечной целью всех систем распознавания рукописного текста является создание машин, которые смогут читать любой текст с такой же точностью распознавания, как и люди, но при этом с большей скоростью.
По данной теме исследования известно множество публикаций. В публикации Чанчиковой Е. В. [1] рассматриваются сверточные нейронные сети, которые позволяют устранить недостатки полносвязных нейронных сетей, при распознавании рукописных символов.
На данный момент сверточные сети являются наилучшим алгоритмом распознавания символов с искажениями, например, так называемых CAPTCHA тестов.
Для решения такой задачи необходимо использовать многомодульную систему распознавания, которая использует сверточные сети, классификатор Витерби и графотрансформирующую сеть для определения отдельных символов на изображении.
В статье Князева А. В. [2] рассматривается задача распознавания слитного рукописного текста, а также обсуждаются различные подходы к решению данной задачи, отмечаются достоинства и недостатки рассматриваемых подходов.
Предлагается также комбинированный подход к распознаванию слитно написанного рукописного слова, включающего в себя процедуру разбиения, основанную на анализе структуры слова, и процедуру распознавания, основанную на использовании нейронной сети.
В публикации Поповой В. В. [3] рассматривается задача распознавания текста на китайском языке на основе ключей с использованием нейронных сетей. В ней рассмотрены основные этапы процесса распознавания рукописного текста, также приведены результаты исследования.
Разработанный в данном исследовании алгоритм производит офлайн распознавание рукописного текста на основе разбиения иероглифа на ключи и распознавании ключей с помощью неокогнитрона.
Разработанное в результате данной работы приложение позволит значительно упростить работу переводчиков, а также поможет при изучении китайского языка.
Свойства почерка ипроблемы его распознавания
Рукописный текст содержит алфавит букв, разделительные знаки. Фундаментальное свойство текста, которое делает возможным общение состоит в том что отличия между разными символами более значительны, чем отличия между разными написаниями того же самого символа.
Почерк состоит из временной последовательности штрихов, то есть движения пера от касания к бумаге до его поднятия.
Символы рукописного текста, как правило, формируются последовательно, один символ завершается перед началом следующего, а буквы следуют определенному пространственному порядку, как пример слева направо.
Но есть также и исключения — например, в английском языке точки над «i» и пересечения на «t» как правило, задерживаются. Сначала пишется основная часть слова, а потом слово завершается написанием точек или же запятых.
У всех букв есть статические и динамические свойства. Статистические отличия могут состоять, например, в размере или форме символа. Отличия в динамике могут состоять в количестве штрихов и их порядке.
Английский язык может иметь более значительные изменения направления штриха, чем китайский. В английском языке также больше вариантов в присутствии или отсутствии повторных штрихов.
Повторный штрих — это штрих в месте, где что-то уже написано, обычно он делается, чтобы избежать поднимания пера ручки.
Существует множество задач распознавания образов для рукописного текста и рисования на планшетах. Они охватывают отличия языковых символов, формул, например таких, которые используются при редактировании.
Проблемы распознавания символов языка включают в себя, например, большой алфавит китайских иероглифов, японские хирагану и катакану, арабские рукописные алфавиты и шрифты в западных языках.
Но при этом наибольшие проблемы в распознавании рукописного текста — это те, что вызывают трудности у людей при попытке прочитать даже собственный почерк.
Во-первых, тот факт, что большинство символов могут быть написаны по-разному. Например, на рис.1 приведены разные возможные стили письма на китайском языке [4], которые передовая система сможет различить и распознать. Также редко можно встретить двух людей с одинаковым почерком.
Эта задача связана с различием шрифтов в классической задаче распознавания текста. Но в отличие от шрифтов, каждая буква в тексте одного человека может иметь совсем иной стиль в зависимости от контекста, в котором осуществляется написание окружающих букв и многих других факторов.
Рис. 1 Возможные стили письма на китайском языке
Чтобы справиться с данной проблемой, множество систем включают в себя компонент, который сам обучается получаемому почерку, различает пользователей, и применяет уже эти данные при принятии решения.
Во-вторых, несколько символов часто выглядят одинаково, либо практически совсем не отличаются в почерке одного человека.
Более того, некоторые буквы могут быть написаны неаккуратно, и объективно быть похожими при этом на совершенно другие буквы.
Эта сложность обычно преодолевается путем добавления системы распознавания текста и использованием словаря, в котором программа может найти сомнительное слово, и таким образом можно избежать неоднозначности.
Наиболее универсальным подходом к решению задачи о распознавании рукописного текста является нейросетевой. Нейронная сеть — это вычислительная структура, которая состоит из искусственных нейронов — абстракции нервных клеток человека.
Созданные структуры, имитирующие человеческий мозг широко используются в распознавании образов, обработки данных и задачах аппроксимации функций.
Основные преимущества нейронных сетей состоят в способности обучаться самостоятельно и автоматически на основе выборок, быть продуктивными на на зашумленных данных, возможностью параллельной реализации и быть эффективными инструментами для обработки больших баз данных.
Нейронные сети широко используются в рассматриваемой области. Также были достигнуты значительные успехи и успешные результаты в частности в распознавании рукописных цифр.
Самой популярной и широко исследуемой и применяемой нейронной сетью является многослойный перцептрон — Multi-LevelPerceptron (MLP).
Такая структура, которая изучается при помощи обратного расширения ошибки, является одной из наиболее популярных и универсальных форм нейронных сетей-классификаторов и одной из наиболее часто используемых для распознавания рукописного текста [5].
В этом подходе существует много разных методов. Самыми популярными можно назвать нечеткие нейронные сети [6], сеть Хэмминга [7], сеть Хопфилда [8], самоорганизующиеся карты [9] и многие другие.
Анализ методов решения задачи при распознавании рукописных символов
На сегодняшний день разработано много систем, которые демонстрируют возможности искусственных нейронных сетей: сети способные представлять текст фонетически, распознавать рукописные буквы, сжимать изображения.
Большинство мощных сетей, которые ориентированы на распознавание символов и звуков берут за основу принцип обратного расширения, который является систематическим подходом для обучения многослойных сетей.
Нейронные сети, которые работают по вышеуказанному принципу пришли на смену системам, которые состояли из одного слоя искусственных нейронов и использовались для широкого класса задач, в том числе для организации искусственного зрения. Однако такие системы имеют и существенные недостатки. Прежде всего, это то, что нет гарантии, что сеть может быть обучена за конечное время.
Каждый из разработанных алгоритмов обучения сетей имеет свои неоспоримые преимущества, но общим недостатком является ограничение в своих возможностях «обучаться» и «вспоминать».
При обучении сети входное множество сигналов рассматривается как вектор.
Обучение осуществляется путем последовательного представления входных векторов с одновременной настройкой весов соответственно определенной процедуре.
В процессе обучения весы сети постепенно становятся такими, что каждый входной вектор производит выходной вектор. Обучаемые алгоритмы могут быть классифицированы как алгоритмы обучения без учителя и с учителем [10,11].
В первом случае при представлении данных входных символов сеть самоорганизуется при помощи настройки своих весов в соответствии с определенным алгоритмом.
Вследствие отсутствия указания наперед определенного выхода, в процессе обучения результаты не предусмотрены с точки определения возбуждающих символов для конкретных нейронов. При этом сеть организуется в форме, которая отражает существенные характеристики учебного набора.
Как пример, входные символы могут быть классифицированы соответственно степени их подобности таким образом, что символы одного класса будут активировать тот же выходной нейрон.
Приведенные методы обучения сети допускают, что известны только входные векторы, а на их основе сеть учится предоставлять лучшие значения исходной функции.
Во втором случае существует учитель, который предоставляет свои входные символы сети, сравнивает результирующие исходы с теми которые необходимы, а потом настраивает весы сети таким образом, чтобы уменьшить расхождения.
Методы обучения сети с учителем предусматривают, что существуют пары «вход-выход», то есть известны значение входных векторов, и значения выходных векторов, которые им соответствуют.
Таким образом, нейронная сеть, которая обучается с учителем, является более надежной, поскольку при определенном входном сигнале на выходе формируется соответствующее выходное значение.
Обучая сеть распознавать новые символы, довольно часто уничтожаются или изменяются результаты предыдущего обучения. Если существует только фиксированный набор учебных векторов, они могут представляться при обучении циклически.
В сетях с обратным расширением, обучающие векторы подаются на вход сети последовательно, до тех пор, пока сеть «не научиться» всему входящему набору.
Но при этом вполне обученная сеть должна запоминать новый обучаемый вектор, и он может изменить весы настолько, что необходимо будет полное переобучение сети.
Заключение
В данной работе был произведен анализ методов решения задачи при распознавании рукописных символов, а также рассмотрены основные свойства почерка и определены проблемы его распознавания при помощи нейронных сетей.
В ходе проведенного анализа были выявлены основные преимущества и недостатки нейронных сетей с «учителем» и сетей «без учителя».
Важной частью любой системы распознавания символов является подсистема сегментации.
Различие написанных слов в изображении и выделение букв в словах является довольно трудоемкой задачей, которая требует немало внимания, чем собственно сам процесс распознавания.
Еще более важной является система выделения признаков, которая должна найти уникальные свойства выделенных букв и отбросить не нужные буквы.
Современная машина распознавания рукописного текста не может существовать без словаря и подсистемы распознавания контекста. Они позволяют машине использовать внешние данные для решения конфликтных ситуаций, например определение отличия между малыми и большими буквами или понимание неясно написанного знака.
Нейронные сети: практическое применение
Наталья Ефремова погружает публику в специфику практического использования нейросетей. Это — расшифровка доклада Highload++.
Добрый день, меня зовут Наталья Ефремова, и я research scientist в компании N-TechLab. Сегодня я буду рассказывать про виды нейронных сетей и их применение.
Сначала скажу пару слов о нашей компании. Компания новая, может быть многие из вас еще не знают, чем мы занимаемся. В прошлом году мы выиграли состязание MegaFace.
Это международное состязание по распознаванию лиц. В этом же году была открыта наша компания, то есть мы на рынке уже около года, даже чуть больше.
Соответственно, мы одна из лидирующих компаний в распознавании лиц и обработке биометрических изображений.
Первая часть моего доклада будет направлена тем, кто незнаком с нейронными сетями. Я занимаюсь непосредственно deep learning. В этой области я работаю более 10 лет.
Хотя она появилась чуть меньше, чем десятилетие назад, раньше были некие зачатки нейронных сетей, которые были похожи на систему deep learning.
В последние 10 лет deep learning и компьютерное зрение развивались неимоверными темпами.
Все, что сделано значимого в этой области, произошло в последние лет 6.
Я расскажу о практических аспектах: где, когда, что применять в плане deep learning для обработки изображений и видео, для распознавания образов и лиц, поскольку я работаю в компании, которая этим занимается.
Немножко расскажу про распознавание эмоций и какие подходы используются в играх и робототехнике.
Также я расскажу про нестандартное применение deep learning, то, что только выходит из научных институтов и пока что еще мало применяется на практике, как это может применяться, и почему это сложно применить.
Доклад будет состоять из двух частей. Так как большинство знакомы с нейронными сетями, сначала я быстро расскажу, как работают нейронные сети, что такое биологические нейронные сети, почему нам важно знать, как это работает, что такое искусственные нейронные сети и какие архитектуры в каких областях применяются.
Сразу извиняюсь, я буду немного перескакивать на английскую терминологию, потому что большую часть того, как называется это на русском языке, я даже не знаю. Возможно вы тоже.
И так, первая часть доклада будет посвящена сверточным нейронные сетям.
Я расскажу, как работают convolutional neural network (CNN), распознавание изображений на примере из распознавания лиц.
Немного расскажу про рекуррентные нейронные сети recurrent neural network (RNN) и обучение с подкреплением на примере систем deep learning.
В качестве нестандартного применения нейронных сетей я расскажу о том, как CNN работает в медицине для распознавания воксильных изображений и о том, как используются нейронные сети для распознавания бедности в Африке.
Итак, часть первая.
Нейронные сети, что это такое?
Прототипом для создания нейронных сетей послужили, как это ни странно, биологические нейронные сети. Возможно многие из вас знают, как программировать нейронную сеть, но откуда она взялась, я думаю, некоторые не знают.
Две трети всей сенсорной информации, которая к нам попадает, приходит с зрительных органов восприятия.
От одной трети поверхности нашего , в которой расположены две самые главные зрительные зоны — дорсальный зрительный путь и вентральный зрительный путь.
Дорсальный зрительный путь начинается в первичной зрительной зоне, в нашем темечке и продолжается наверх, в то время как вентральный путь начинается на нашем затылке и заканчивается примерно за ушами. Все важное распознавание образов, которое у нас происходит, все смыслонесущее, то что мы осознаём, проходит именно там же, за ушами.
Почему это важно?
Потому что часто нужно для понимания нейронных сетей. Во-первых, все об этом рассказывают, и я уже привыкла что так происходит, а во-вторых, дело в том, что все области, которые используются в нейронных сетях для распознавания образов, пришли к нам именно из вентрального зрительного пути, где каждая маленькая зона отвечает за свою строго определенную функцию.
Итак, изображение, когда попадает к нам из сетчатки глаза проходит череду зрительных зон и заканчивается в височной зоне.
В далекие 60-е годы прошлого века, когда только начиналось изучение зрительных зон , первые эксперименты проводились на животных, потому что не было fMRI. Исследовали с помощью электродов, вживлённых в различные зрительные зоны.
Первая зрительная зона была исследована Дэвидом Хьюбелем и Торстеном Визелем в 1962 году. Они проводили эксперименты на кошках. Кошкам показывались различные движущиеся объекты.
На что реагировали клетки , то и было тем стимулом, которое распознавало животное.
Даже сейчас многие эксперименты проводятся этими драконовскими способами, но тем не менее это самый эффективный способ узнать, что делает каждая мельчайшая клеточка в нашем .
Таким же способом были открыты еще многие важные свойства зрительных зон, которые мы используем в deep learning сейчас.
Одно из важнейших свойств — это увеличение рецептивных полей наших клеток по мере продвижения от первичных зрительных зон к височным долям, то есть более поздним зрительным зонам.
Рецептивное поле — это та часть изображения, которую обрабатывает каждая клеточка нашего . У каждой клетки своё рецептивное поле. Это же свойство сохраняется и в нейронных сетях, как вы, наверное, все знаете.
Также с возрастанием рецептивных полей увеличиваются сложные стимулы, которые обычно распознают нейронные сети.
Здесь вы видите примеры сложности стимулов, различных двухмерных форм, которые распознаются в зонах V2, V4 и различных частях височных полей у макак. Также проводятся некоторое количество экспериментов на МРТ.
Здесь вы видите, как раз, как проводятся такие эксперименты. Это 1 нанометр часть зон IT cortex’a мартышки при распознавании различных объектов. Подсвечено то, где распознается.
Просуммируем. Важное свойство, которое мы хотим перенять у зрительных зон — это то, что возрастают размеры рецептивных полей, и увеличивается сложность объектов, которые мы распознаем.
До того, как мы научились это применять к компьютерному зрению — в общем, как такового компьютерного зрения не было. Во всяком случае оно работало не так хорошо, как работает сейчас.
Все эти свойства мы переносим в нейронную сеть и вот оно заработало помимо небольшого отступления к датасетам, о котором расскажу попозже.
Но сначала немного о простейшем персептроне.
Он также образован по образу и подобию нашего . Простейший элемент напоминающий клетку — нейрон. Имеет входные элементы, которые по умолчанию располагаются слева направо, изредка снизу вверх. Слева это входные части нейрона, справа выходные части нейрона.
Простейший персептрон способен выполнять только самые простые операции. Для того, чтобы выполнять более сложные вычисления, нам нужна структура с большим количеством скрытых слоёв.
В случае компьютерного зрения нам нужно еще больше скрытых слоёв. И только тогда система будет осмысленно распознавать то, что она видит.
Итак, что происходит при распознавании изображения, я расскажу на пример лиц.
Для нас посмотреть на эту картинку и сказать, что на ней изображено именно лицо статуи достаточно просто. Однако до 2010 года для компьютерного зрения это было невероятно сложной задачей.
Те, кто может быть занимался этим вопросом до этого времени, наверное, знают насколько тяжело было описать объект, который мы хотим найти на картинке без слов.
Нам нужно это было сделать каким-то геометрическим способом, описать объект, описать взаимосвязи объекта, как могут эти части относиться к друг другу, потом найти это изображение на объекте, сравнить их и получить, что мы распознали плохо. Обычно это было чуть лучше, чем подбрасывание монетки. Чуть лучше, чем chance level.
Сейчас это происходит не так. Мы разбиваем наше изображение на пиксели либо на некие патчи: 2х2, 3х3, 5х5, 11х11 пикселей, как удобно создателям системы, в которой они служат входным слоем в нейронную сеть.
Сигналы с этих входных слоёв передаются от слоя к слою с помощью синапсов, каждый из слоёв имеет свои определенные коэффициенты. Итак, мы передаём от слоя к слою, от слоя к слою, пока мы не получим, что мы распознали лицо.
Условно все эти части можно разделить на три класса, мы их обозначим X, W и Y, где Х — это наше входное изображение, Y — это набор лейблов, и нам нужно получить наши веса.
Как же мы вычислим W?
При наличии нашего Х и Y это, кажется, просто. Однако то, что обозначено звездочкой, очень сложная нелинейная операция, которая, к сожалению, не имеет обратной. Даже имея 2 заданных компоненты уравнения, очень сложно ее вычислить. Поэтому нам нужно постепенно, методом проб и ошибок, подбором веса W сделать так, чтобы ошибка максимально уменьшилась, желательно, чтобы стала равной нулю.
Этот процесс происходит итеративно, мы постоянно уменьшаем, пока не находим то значение веса W, которое нас достаточно устроит.
К слову, ни одна нейронная сеть, с которой я работала, не достигала ошибки, равной нулю, но работала при этом достаточно хорошо.
Перед вами первая сеть, которая победила на международном соревновании ImageNet в 2012 году. Это так называемый AlexNet. Это сеть, которая впервые заявила о себе, о том, что существует convolutional neural networks и с тех самых пор на всех международных состязаниях уже convolutional neural nets не сдавали своих позиций никогда.
Несмотря на то, что эта сеть достаточно мелкая (в ней всего 7 скрытых слоёв), она содержит 650 тысяч нейронов с 60 миллионами параметров. Для того, чтобы итеративно научиться находить нужные веса, нам нужно очень много примеров.
Как же учится наша нейронная сеть?
Она учится на примере картинки и лейбла. Как нас в детстве учат «это кошка, а это собака», так же нейронные сети обучаются на большом количестве картинок. Но дело в том, что до 2010 не существовало достаточно большого data set’a, который способен был бы научить такое количество параметров распознавать изображения.
Самые большие базы данных, которые существовали до этого времени: PASCAL VOC, в который было всего 20 категорий объектов, и Caltech 101, который был разработан в California Institute of Technology. В последнем была 101 категория, и это было много. Тем же, кто не сумел найти свои объекты ни в одной из этих баз данных, приходилось стоить свои базы данных, что, я скажу, страшно мучительно.
Однако, в 2010 году появилась база ImageNet, в которой было 15 миллионов изображений, разделённые на 22 тысячи категорий. Это решило нашу проблему обучения нейронных сетей.
Сейчас все желающие, у кого есть какой-либо академический адрес, могут спокойно зайти на сайт базы, запросить доступ и получить эту базу для тренировки своих нейронных сетей.
Они отвечают достаточно быстро, по-моему, на следующий день.
По сравнению с предыдущими data set’ами это очень большая база данных.
На примере видно, насколько было незначительно все то, что было до неё. Одновременно с базой ImageNet появилось соревнование ImageNet, международный Challenge, в который все команды, желающие посоревноваться, могут принять участие.
В этом году победила сеть, созданная в Китае, в ней было 269 слоёв. Не знаю, сколько параметров, подозреваю, тоже много.
Как выглядит архитектура глубины нейронной сети?
Условно ее можно разделить на 2 части: те, которые учится, и те, которые не учится.
Чёрным обозначены те части, которые не учатся, все остальные слои способны обучаться. Существует множество определений того, что находится внутри каждого сверточного слоя. Одно из принятых обозначений — обозначают один слой с тремя компонентами convolution stage, detector stage и pooling stage.
Не буду вдаваться в детали, еще будет много докладов, в которых подробно рассмотрено, как это работает. Расскажу на примере.
Поскольку организаторы просили меня не упоминать много формул, я их выкинула совсем.
Итак, входное изображение попадает в сеть слоёв, которые можно назвать фильтрами разного размера и разной сложности элементов, которые они распознают. Эти фильтры составляют некий свой индекс или набор признаков, который потом попадает в классификатор. Обычно это либо SVM, либо MLP — многослойный перцептрон, кому что удобно.
По образу и подобию с биологической нейронной сетью объекты распознаются разной сложности. По мере увеличения количества слоёв это все потеряло связь с cortex’ом, поскольку там ограничено количество зон в нейронной сети. 269 много-много зон абстракции, поэтому сохраняется только увеличение сложности и количество элементов и увеличение рецептивных полей.
Если рассмотреть на примере распознавания лиц, то у нас рецептивное поле первого слоя будет маленьким, потом чуть побольше, побольше, и так до тех пор, пока наконец мы не сможем распознавать уже лицо целиком.
С точки зрения того, что находится у нас внутри фильтров, сначала будут наклонные палочки плюс немного цвета, затем части лиц, а потом уже целиком лица будут распознаваться каждой клеточкой слоя.
Есть люди, которые утверждают, что человек всегда распознаёт лучше, чем сеть. Так ли это?
В 2014 году ученые решили проверить, насколько мы хорошо распознаем в сравнении с нейронными сетями.
Они взяли 2 самые лучшие на данный момент сети — это AlexNet и сеть Мэттью Зиллера и Фергюса, и сравнили с откликом разных зон макаки, которая тоже была научена распознавать какие-то объекты.
Объекты были из животного мира, чтобы обезьяна не запуталась, и были проведены эксперименты, кто же распознаёт лучше.
Так как получить отклик от мартышки внятно невозможно, ей вживили электроды и мерили непосредственно отклик каждого нейрона.
Оказалось, что в нормальных условиях клетки реагировали так же хорошо, как и state of the art model на тот момент, то есть сеть Мэттью Зиллера.
Однако при увеличении скорости показа объектов, увеличении количества шумов и объектов на изображении скорость распознавания и его качество нашего и приматов сильно падают. Даже самая простая сверточная нейронная сеть распознаёт объекты лучше. То есть официально нейронные сети работают лучше, чем наш .
Какие есть классические задачи, которые способны выполнять сверточные нейронные сети?
Их на самом деле не так много, они относятся к трём классам.
Среди них такие задачи, как идентификация объекта, семантическая сегментация, распознавание лиц, распознавание частей тела человека, семантическое определение границ, выделение объектов внимания на изображение и выделение нормалей к поверхности. Их условно можно разделить на 3 уровня: от самых низкоуровневых задач до самых высокоуровневых задач.
На примере этого изображения рассмотрим, что делает каждая из задач.
- Определение границ — это самая низкоуровневая задача, для которой уже классически применяются сверточные нейронные сети.
- Определение вектора к нормали позволяет нам реконструировать трёхмерное изображение из двухмерного.
- Saliency, определение объектов внимания — это то, на что обратил бы внимание человек при рассмотрении этой картинки.
- Семантическая сегментация позволяет разделить объекты на классы по их структуре, ничего не зная об этих объектах, то есть еще до их распознавания.
- Семантическое выделение границ — это выделение границ, разбитых на классы.
- Выделение частей тела человека.
- И самая высокоуровневая задача — распознавание самих объектов, которое мы сейчас рассмотрим на примере распознавания лиц.
Как у нас происходит распознавание лиц?
Первое, что мы делаем — пробегаем face detector’ом по изображению для того, чтобы найти лицо. Далее мы нормализуем, центрируем лицо и запускаем его на обработку в нейронную сеть. После чего получаем набор или вектор признаков однозначно описывающий фичи этого лица.
Затем мы можем этот вектор признаков сравнить со всеми векторами признаков, которые хранятся у нас в базе данных и получить отсылку на конкретного человека, на его имя, на его профиль — всё, что у нас может храниться в базе данных.
Именно таким образом работает наш продукт FindFace — это бесплатный сервис, который помогает искать профили людей в базе «ВКонтакте».
Кроме того, у нас есть API для компаний, которые хотят попробовать наши продукты. Мы предоставляем сервис по детектированию лиц, по верификации и по идентификации пользователей.
Сейчас у нас разработаны 2 сценария. Первый — это идентификация, поиск лица по базе данных. Второе — это верификация, это сравнение двух изображений с некой вероятностью, что это один и тот же человек. Кроме того, у нас сейчас в разработке распознавание эмоций, распознавание изображений на видео и Liveness Detection — это понимание, живой ли человек перед камерой или фотография.
Немного статистики. При идентификации, при поиске по 10 тысячам фото у нас точность около 95% в зависимости от качества базы, 99% точность верификации.
И помимо этого данный алгоритм очень устойчив к изменениям — нам не посредственно необязательно смотреть в камеру, у нас могут быть некие загораживающие предметы: очки, солнечные очки, борода, медицинская маска.
В некоторых случаях мы можем победить даже такие невероятные сложности для компьютерного зрения, как и очки, и маска.
Очень быстрый поиск, затрачивается 0,5 секунд на обработку 1 миллиарда фотографий. Нами разработан уникальный индекс быстрого поиска.
Также мы можем работать с изображениями низкого качества, полученных с CCTV камер. Мы можем обрабатывать это все в режиме реального времени.
Можно загружать фото через Web интерфейс, через Android, iOS и производить поиск по 100 миллионам пользователей и их 250 миллионам фотографий.
Нейронные сети: новая теория раскрывает тайну их работы
Как одно выступление на конференции стало сенсацией в мире искусственного интеллекта? Натали Волчоувер на сайте WIRED рассказала об открытии, которое может привести к разгадке секрета действия сетей глубокого обучения.
Как одно выступление на конференции стало сенсацией в мире искусственного интеллекта? Натали Волчоувер на сайте WIRED рассказала об открытии, которое может привести к пониманию того, как работают нейронные сети.
Хотя алгоритмы, известные как “глубокие нейронные сети”, научились водить автомобили, побеждать чемпионов видеоигр и Го, рисовать картины, предсказывать погоду и делать научные открытия, они поставили в тупик своих создателей, потому что никто не ожидал, что алгоритмы глубокого обучения будут так хорошо работать. Ведь в основе этих систем лежало исключительно смутное представление об архитектуре мозга (работу которого тоже никто не понимает).
Как и мозг, глубокая нейронная сеть обладает слоями нейронов, только искусственными, то есть, фрагментами компьютерной памяти. Когда нейрон возбуждается, он отправляет сигналы связанным с ним нейронам в другой слой. Во время глубокого обучения связи в сети усиливаются или ослабевают для того, чтобы система лучше передавала сигнал от внешних данных (например, фото собаки) к слоям нейронов, ассоциированных с нужными высокоуровневыми концепциями, например, “собакой”. После того, как глубокая нейросеть научилась на тысячах образцов фотографий собак, она сможет узнавать их на фото так же, как и люди. Волшебный скачок от частных случаев к общим концепциям дает нейросетям их силу, как и лежит в основе человеческого мышления, творчества и других способностей, которые в совокупности называют «интеллектом». Эксперты не знали, что позволяет сетям глубокого обучения проводить обобщение и до какой степени это восприятие реальности похоже на человеческий мозг.
В июле этого года на YouTube появилась запись выступления на конференции в Берлине, которая предлагает возможный ответ. В своем докладе Нафтали Тишби , ученый и нейробиолог из Еврейского университета в Иерусалиме, представил доказательство в поддержку новой теории, объясняющей глубокое обучение. Тишби считает, что глубокие нейронные сети учатся при помощи “информационного бутылочного горлышка”, процедуры, которую он и его коллеги описали в 1999. Идея заключается в том, что нейросеть избавляется от лишних входных данных и деталей, “проталкивая” информацию через бутылочное горлышко и оставляя только самые подходящие под общее определение признаки. Компьютерные эксперименты Тишби и его студента Равида Шварца-Зив показали, как эта процедура происходит во время глубокого обучения.
Эти находки взбудоражили AI-сообщество. “Я верю, что идея о бутылочном горлышке может быть очень важной в будущем исследовании нейронных сетей”, – сказал Алекс Алеми из Google Research, который уже разработал новые методы аппроксимации для исследования теории на более крупных нейронных сетях. Бутылочное горлышко может выступать “не только как теоретический инструмент понимания работы нейронных сетей, но и как инструмент создания новых целей и структур нейронных сетей”, сказал Алеми.
Некоторые исследователи сомневаются, что эта теория полностью объясняет успех глубокого обучения, но Кайл Кранмер из университета Нью-Йорка, который использует машинное обучение для изучения столкновения частиц на Большом адронном коллайдере, говорит, что “это похоже на правду”.
Джоффри Хинтон, первопроходец в глубоком обучении, написал письмо Тишби после того, как посмотрел его выступление. “Это очень интересно. Мне нужно будет послушать его ещё десять тысяч раз, чтобы действительно понять, но в наше время редко услышишь выступление с действительно оригинальной идеей, которая может быть ответом на большую загадку”.
Согласно Тишби, который считает этот принцип фундаментальным для любого обучения, этот долгожданный ответ значит, что “самая главная часть обучения – это забывание”.
Бутылочное горлышко
Тишби начал задумываться об информационном бутылочном горлышке, когда другие исследователи начинали работать с глубокими нейронными сетями, хотя ни одна концепция ещё не имела названия. Это было в 1980-х, когда Тишби думал о том, как хорошо люди распознают речь друг друга, что было проблемой в изучении искусственного интеллекта в то время. Тишби понял, что суть проблемы заключается в вопросе релевантности – какие самые значимые признаки произнесенного слова и как мы отделяем их от переменных, таких как акценты, дикция и интонация? Какие сигналы мы выделяем из моря данных реальности?
“Эта идея релевантности информации упоминалась множество раз, но никогда не была корректно сформулирована”, – сказал Тишби в интервью. “Долгие годы люди думали, что теория информации не подходит к размышлениям о релевантности, и эти заблуждения восходят к самому Шеннону.”
Клод Шеннон, создатель теории информации, в определенном смысле запустил изучение информации в 1940-х, позволив рассматривать информацию как абстрактную категорию, нули и единицы с чисто математическим значением. Как говорит Тишби, Шеннон принял точку зрения, что “информация не имеет отношения к семантике”. Но Тишби считает, что это не так. Используя теорию информации, «вы можете строго определить “релевантность”».
Представьте, что X – сложный набор данных, как пиксели на фото собаки, а Y – простая переменная, представленная этими данными, как слово “собака”. Вы можете захватить всю «релевантную» информацию об X в Y, сжимая X настолько, насколько сможете, не теряя способности прогнозировать Y. В своей статье 1999 года Тишби и его соавторы Фернандо Перейра (сейчас работает в Google) и Уильям Биалек (сейчас работает в Пристонском университете) сформулировали это предположение как проблему математической оптимизации. Это была фундаментальная идея без практического применения.
“Я думал об этом в разном контексте последние тридцать лет”, – говорит Тишби. “Мне повезло, что глубокие нейронные сети стали такими важными.”
Глаза на лицах на людях
Хотя концепция глубоких нейронных сетей существует десятки лет, их производительность в задачах распознавания речи и изображений выросла в начале 2010-х благодаря улучшенным схемам обучения и более мощным компьютерным процессорам. Тишби узнал о потенциальной связи этого улучшения и своего принципа бутылочного горлышка в 2014, после прочтения статьи физиков Давида Шваба и Панкажа Мехты.
Они узнали, что изобретенные Хинтоном алгоритм под названием “сеть глубокого убеждения” работает, как ренормализация, метод, который используется в физике, чтобы получить общее представление о физической системе по её деталям. Когда Шваб и Мехта применили сеть глубокого убеждения к модели магнита в его “критической точке”, где система фрактальна в любом масштабе, они обнаружили, что сеть автоматически использовала похожую на ренормализацию методику, чтобы вычислить состояние модели. Это было удивительным признаком того, что “выделение релевантных признаков в контексте статистической физики и выделение релевантных признаков в контексте глубокого обучения не просто одинаково называются, но и являются одним и тем же”, как сказал биофизик Илья Неменман .
Проблема только заключается в том, что реальный мир не фрактален. “Естественный мир – это не уши на ушах на ушах, это глаза на лицах на людях,” – сказал Кранмер. “Поэтому я бы не сказал, что [процедура ренормализации] является причиной хорошей работы нейросетей с изображениями”. Но Тишби, который в то время проходил химиотерапию от рака поджелудочной железы, понял, что всё это можно охватить более широкой идеей. “Размышление о науке и роли моих старых идей стало важной частью моего исцеления”, – сказал он.
В 2015 Тишби и его студентка Нога Заславски предположили , что глубокое обучение представляет собой процедуру информационного бутылочного горлышка, которое отсеивает лишние данные, сохраняя информацию о предмете, который представляют данные. Новые эксперименты с глубокими нейросетями показывают, как происходит процедура бутылочного горлышка. В одном случае исследователи использовали небольшие сети, которые можно было научить маркировать входящие данные единицей или нулем (“собака” или “не собака”) и создали в 282 нейронных связях случайные сигналы. Затем они отследили, что случилось, когда сети начали обучение на 3000 наборах данных.
Базовый алгоритм, используемый в большинстве процедур глубокого обучения для настройки ответа нейронных связей на данные, называется “стохастическим градиентным спуском”. Каждый раз, когда сеть получает данные, сигнал каскадом поднимается через слои искусственных нейронов. Когда сигнал достигает верхнего слоя, финальный шаблон можно сравнить с корректной пометкой для изображения – 1 или 0, “собака” или “не собака”. Любые различия между этим шаблоном и правильным ответом «обратно распространяются» по слоям, как учитель, исправляющий экзамен, алгоритм усиливает или ослабляет каждое соединение, чтобы улучшить сеть для создания правильного выходного сигнала. В ходе обучения общие шаблоны в данных обучения отражаются в силе соединений, и сеть становится экспертом в правильной маркировке данных, узнавая собаку, слово или единицу.
В своих экспериментах Тишби и Шварц-Зив отслеживали, насколько много информации о каждом слое глубокой нейронной сети сохраняются о входных данных и о том, какая информация хранится в каждом о выходной метке. Ученые обнаружили, что постепенно сети сходятся к теоретическому ограничению информационного бутылочного горлышка: теоретическому пределу, полученному в оригинальной статье Тишби, Перейры и Биалека. Предел представляет собой абсолютное лучший результат, который может получить система при извлечении релевантной информации. На этой границе система сжимает входные данные максимально сильно, не жертвуя способностью точно предсказывать его категорию.
Тишби и Шварц-Зив сделали интересное открытие, что глубокое обучение происходит в две фазы: короткая фаза “подстройки”, в которой сеть учится маркировать данные для обучения, и длинная фаза “сжатия”, в которой сеть становится лучше в обобщении, которое измеряется производительностью сети в маркировке новых тестовых данных.
Когда нейросеть подстраивает свои связи под стохастический градиентный спуск, поначалу количество бит, которое она хранит о входных данных, остается примерно постоянным или незначительно увеличивается, поскольку связи настраиваются на кодирование паттернов на входе, и сеть получает хорошие результаты при установке меток на него. Некоторые эксперты сравнили этот этап с запоминанием.
Затем обучение переходит в фазу сжатия. Сеть начинает сжимать информацию о входных данных, отслеживая только самые заметные признаки, коррелирующие с выходной меткой. Это происходит, потому что в каждой итерации градиентного спуска происходят случайные корреляции, приказывающие сети делать разные вещи и делать связи сильнее или слабее. Эта рандомизация является сжатием представления системы о входных данных. Например, на некоторых фотографиях собак могут быть дома, а на некоторых могут не быть. Когда сеть анализирует эти фотографии, она может “забыть” корреляцию между домами и собаками на некоторых фотографиях, хотя другие фото этому противодействуют. Понимание общих концепций системой и формируется забыванием некоторых признаков. В самом деле, эксперименты показали, что способность нейронной сети к обобщению становится лучше во время фазы сжатия. (Глубокая нейронная сеть, натренированная на фото собак, может быть протестирована на других фото, с собаками или без них.)
Ещё предстоит узнать, управляет ли информационное бутылочное горлышко всеми режимами глубокого обучения или существуют другие способы обобщения помимо сжатия. Некоторые ИИ-эксперты рассматривают идеи Тишби как одни из самых важных недавних теоретических открытий о глубоком обучении. Эндрю Сакс, исследователь ИИ и нейробиолог в Гарвардском университете, заметил, что некоторые большие нейронные сети не требуют долгой фазы сжатия, чтобы хорошо совершать обобщение. Вместо этого исследователи программируют нечто под названием ранняя остановка, которая сокращает время обучения, чтобы сеть не кодировала слишком много корреляций.
Тишби говорит, что модели сетей, проанализированные Саксом и его коллегами, отличаются от стандартной архитектуры нейронных сетей, но теория информационного бутылочного горлышка объясняет их производительность лучше, чем другие методы. Вопросы о том, существует ли бутылочное горлышко в более крупных нейронных сетях, частично рассматриваются в последних экспериментах Тишби и Шварца-Зива, в которых они обучают гораздо более крупные нейронные сети с 330,000 соединениями для распознавания рукописных цифр в базе данных MNIST с 60,000 изображений, которая является известным эталоном для оценки эффективности алгоритмов глубокого обучения. Ученые увидели такую же конвергенцию сетей; они также наблюдали две отдельные фазы глубокого обучения, разделенные еще более резким переходом, чем в небольших сетях. «Теперь я полностью убежден, что это общее явление», – сказал Тишби.
Нейронные сети: люди и машины
Загадка того, как мозг просеивает сигналы от наших чувств и поднимает их до уровня сознательной осведомленности, вызывала много интереса среди первых исследователей искусственного интеллекта, которые надеялись воссоздать процесс обучения мозга. По большей части они уже отказались от этого пути технологического прогресса и стали усиливать производительность, а не гнаться за биологическим правдоподобием. Тем не менее, поскольку машины для мышления достигают все больших подвигов, даже вызывая опасения, что ИИ может когда-нибудь стать экзистенциальной угрозой, многие надеются, что эти исследования откроют общие идеи об обучении и интеллекте.
Бренден Лейк, изучающий различия и сходства между обучением людей и машин, сказал, что находки Тишби представляют собо “важный шаг к вскрытию черного ящика нейронных сетей”, но он подчеркнул, что мозг является гораздо более сложным черным ящиком. Наши взрослые мозги, которые имеют несколько сотен триллионов связей между 86 миллиардами нейронов, по всей вероятности, используют ряд уловок для усиления обобщения, выходя за рамки основных процедур обучения распознаванию образов и звука, которые происходят во время младенчества и которые могут во многом напоминать глубокое обучение.
Например, Лейк сказал, что две фазы глубокого обучения не похожи на способ изучения детьми рукописных букв, которое он изучает. Детям не нужно видеть тысячи примеров и сжимать свое представление о буквах долгий период времени, чтобы узнать другие примеры этих букв и писать их самостоятельно. Они могут научиться этому на одном примере. Модели Лейка и его коллег предполагают, что мозг может деконструировать новую букву как серию “ударов” – ранее существовавших ментальных конструкций – что позволяет связать концепцию письма с предшествующим знанием. «Вместо того, чтобы думать о изображении буквы как шаблоне пикселей и изучать концепцию как отображение этих признаков», как в стандартных алгоритмах машинного обучения, пояснил Лейк, «я пытаюсь построить простую причинную модель буквы», то есть, создать более короткий путь к обобщению.
Такие идеи о мозге могут пригодиться AI-сообществу, способствуя обмену информацией между этими сферами. Тишби верит, что его теория окажется полезной в обеих дисциплинах, даже если она принимает более общую форму в обучении людей. Теория уже позволяет понять, какие типы проблем могут решать настоящие и искусственные нейронные сети. “Это дает полную характеристику проблем, которые можно изучить”, говорит Тишби. Это «проблемы, в которых я могу стереть шум из входных данных, не нанося ущерба моей способности классифицировать. Это проблемы естественного зрения и распознавания речи. Это именно те проблемы, с которыми может справиться наш мозг».
Однако и реальные, и искусственные нейронные сети не справляются с проблемами, в которых важна каждая деталь, а разница в минутах может испортить весь результат. Например, многие люди не могут быстро перемножить два больших числа в уме. “У нас есть большой ряд подобных проблем, логических задач, очень чувствительных к изменению одной переменной. Классификация, дискретные проблемы, криптографические проблемы. Я не думаю, что глубокое обучение когда-нибудь поможет мне взломать криптографические коды”.
Обобщение – информационное бутылочное горлышко – значит отбрасывание некоторых деталей. Оно не подходит для сложных вычислений в уме, но они и не являются основной задачей мозга. Мы ищем знакомые лица в толпе, порядок в хаосе, заметные сигналы в шумном мире.
Нейросетевые методы распознавания изображений (стр. 2 из 3)
2. Нейронные сети высокого порядка
Нейронные сети высокого порядка (НСВП) отличаются от МНС тем, что у них только один слой, но на входы нейронов поступают так же термы высокого порядка, являющиеся произведением двух или более компонент входного вектора [1]. Такие сети так же могут формировать сложные разделяющие поверхности.
В [12] показано применение НСВП строго третьего порядка для распознавания изображений лиц, имеющих произвольные масштабы и двумерные повороты. Приведены методы обучения таких сетей. Особенность такой сети заключаются в том, что для обучения некоторому классу достаточно предъявить его образ без вариаций масштабов и поворотов – после обучения сеть будет распознавать известные классы инвариантно к масштабу и поворотам. Такая сеть не является полносвязной, быстро обучается и работает. Отмечено существенное повышение точности классификации такой сетью повёрнутых и масштабированных изображений по сравнению с МНС.
3. Нейронные сети Хопфилда
НС Хопфилда (НСХ) является однослойной и полносвязной (связи нейронов на самих себя отсутствуют), её выходы связаны со входами. В отличие от МНС, НСХ является релаксационной – т.е. будучи установленной в начальное состояние, функционирует до тех пор, пока не достигнет стабильного состояния, которое и будет являться её выходным значением. НСХ применяются в качестве ассоциативной памяти и для решения оптимизационных задач. В первом случае НСХ обучается без учителя (например, по правилу Хебба), во втором случае веса между нейронами изначально кодируют решаемую задачу. НСХ бывают синхронными, когда одновременно пересчитываются все нейроны и асинхронными, когда пересчитывается случайно выбранный нейрон. Для исследования динамики функционирования НСХ используются методы Ляпунова. Показано [1], что асинхронная НСХ всегда сходится к устойчивым точкам, а аттракторами синхронной НСХ являются устойчивые стационарные точки и предельные циклы длины два. Таким образом НСХ из начального состояния сходится к ближайшему локальному минимуму энергии сети, состояние нейронов в котором и будет восстановленным образом для задач распознавания, и решением – для оптимизационных задач. Для поиска глобального минимума применительно к оптимизационным задачам используют стохастические модификации НСХ [1].
Применение НСХ в качестве ассоциативной памяти позволяет точно восстанавливать образы, которым сеть обучена, при подаче на вход искажённого образа. При этом сеть “вспомнит” наиболее близкий (в смысле локального минимума энергии) образ, и таким образом распознает его. Такое функционирование так же можно представить как последовательное применение автоассоциативной памяти, описанной выше. В отличие от автоассоциативной памяти НСХ идеально точно восстановит образ. Для избежания интерференционных минимумов и повышения ёмкости сети используют различные методы [1,13]. В работе [13] описано применение НСХ, где распознаваемое изображение лица сначала подавалось на НСХ, выход которой затем сравнивался с хранимыми изображениями. Отмечено, что предварительная обработка входного изображения при помощи НСХ существенно повышает точность распознавания.
Применение НСХ в качестве оптимизационного метода для восстановления пространственной формы лица по двумерному полутоновому изображению (а так же для детектирования граней) описано в [14]. Здесь используется вариация НСХ – ячеистая нейронная сеть (ЯНС), в которой нейроны связаны только с ближайшими соседями из двумерной области. Матрица связей одинакова для всех нейронов и определяется характером задачи. Отмечаются хорошие результаты восстановления трёхмерной формы (в частности для изображений лиц) и высокая скорость работы.
4. Самоорганизующиеся нейронные сети Кохонена
Самоорганизующиеся нейронные сети Кохонена (СНСК) обеспечивают топологическое упорядочивание входного пространства образов. Они позволяют топологически непрерывно отображать входное n-мерное пространство в выходное m-мерное, m
НЕЙРО́ННЫЕ СЕ́ТИ
Скопировать библиографическую ссылку:
НЕЙРО́ННЫЕ СЕ́ТИ искусственные, многослойные высокопараллельные (т. е. с большим числом независимо параллельно работающих элементов) логические структуры, составленные из формальных нейронов. Начало теории нейронных сетей и нейрокомпьютеров положила работа американских нейрофизиологов У. Мак-Каллока и У. Питтса «Логическое исчисление идей, относящихся к нервной деятельности» (1943), в которой они предложили математическую модель биологического нейрона. Среди основополагающих работ следует выделить модель Д. Хэбба, который в 1949 г. предложил закон обучения, явившийся стартовой точкой для алгоритмов обучения искусственных нейронных сетей. На дальнейшее развитие теории нейронной сети существенное влияние оказала монография американского нейрофизиолога Ф. Розенблатта «Принципы нейродинамики», в которой он подробно описал схему перцептрона (устройства, моделирующего процесс восприятия информации человеческим мозгом). Его идеи получили развитие в научных работах многих авторов. В 1985–86 гг. теория нейронных сетей получила «технологический импульс», вызванный возможностью моделирования нейронных сетей на появившихся в то время доступных и высокопроизводительных персональных компьютерах . Теория нейронной сети продолжает достаточно активно развиваться в начале 21 века. По оценкам специалистов, в ближайшее время ожидается значительный технологический рост в области проектирования нейронных сетей и нейрокомпьютеров. За последние годы уже открыто немало новых возможностей нейронных сетей, а работы в данной области вносят существенный вклад в промышленность, науку и технологии, имеют большое экономическое значение.