Автоматическое обнаружение трещин на атомной электростанции при помощи алгоритма глубокого обучения (deep learning)

Нейронная сеть позволяет сделать атомные реакторы безопаснее

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

В статье, опубликованной в научном журнале IEEE Transactions on Industrial Electronics, ученые рассказали о фреймворке для машинного обучения naïve Bayes – сверхточной нейронной сети, способной эффективно определять трещины в реакторах на основе анализа отдельных видеокадров.

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

Обратите внимание

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

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

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

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

Одним из основных направлений современной физики является поиск так называемого «святого Грааля» возобновляемой энергии – возможности использования ядерного синтеза для обеспечения всех наших энергетических нужд.

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

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

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

Источник: https://Hi-News.ru/technology/nejronnaya-set-pozvolyaet-sdelat-atomnye-reaktory-bezopasnee.html

Deep learning. Stacked Autoencoders. Методы обучения нейронных сетей с большим количеством скрытых слоёв

Е.С.Борисов

понедельник, 21 марта 2016 г.

В этой статье мы поговорим о подходах к построению интеллектуальных систем deep learning, о модели искусственных нейронных сетей называемых автокодировщик (autoencoder) и о методах обучения искусственных нейронных сетей прямого распространения с большим (больше двух) количеством скрытых слоёв.

1. Введение

Математические модели биологического нейрона появились ещё в середине прошлого века [1]. Потом были первые модели нейронных сетей с одним обрабатывающим слоем, возможности которых были ограничены проблемой линейной неразделимости.

Позже появился метод обратного распространения [2] — способ позволяющий эффективно обучать нейронные сети с одним или двумя скрытыми слоями.

Многослойный перцептрон с тремя обрабатывающими слоями имеет возможность строить в пространстве признаков поверхности практически любой формы.

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

До недавнего времени не удавалось эффективно обучать нейронные сети с числом скрытых слоёв более двух.

Важно

Одной из причин является проблема «исчезающего» градиента (vanishing gradient) [3] — при вычислении градиента (направления наибольшего роста ошибки сети в пространстве весовых коэффициентов) методом обратного распространения происходит его уменьшение по мере прохождения от выходного слоя сети к входному.

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

В результате этих усилий в середине 2000-х годов появилась концепция deep learning [4](глубокое или глубинное обучение).

Deep learning [5] рассматривает многоуровневые (представленные несколькими слоями) модели интеллектуальных систем, такие как искусственные нейронные сети.

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

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

2. Модель autoencoder

Обычный autoencoder [6] это трёхслойная нейронная сеть прямого распространения, в которой вторая половина сети зеркально повторяет первую (Рис.1). Как следует из названия, autoencoder отображает входной образ в себя, т.е. эта сеть обучается таким образом, что бы воспроизводить учебное множество.
Рис.

1: Autoencoder

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

Аutoencoder также используют как систему шумоподавления (denoising autoencoder). Для этого при обучении на входной образ накладывают шум и требуют от сети восстановить исходный образ, в этом случае размер скрытого слоя задают большим чем размер входного (и соответственно выходного) слоя.

Рис.2: Autoencoder с шумоподавлением

Обучать autoencoder можно как обычный перцептрон с одним скрытым слоем используя градиентные методы[2] .

Далее мы вернёмся к задаче обучения искусственной нейронной сети с большим количеством слоёв и решению проблемы «исчезающего» градиента.

3. Предобучение многослойной нейронной сети с помощью autoencoder

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

чем дальше слой от выхода тем меньше получаются значения изменения его весов.

Эту проблему можно решить «правильно» выбрав начальные значения весов.

Тогда нам не потребуется значительно их менять в процессе обучения и малые значения градиента на первых слоях сети нас вполне удовлетворят.

Таким образом процедура обучения сети разделилась на следующие две фазы.

  1. предобучение сети (pretraining)
  2. тонкая подстройка весов (fine-tuning)

Со второй фазой всё более-менее ясно, это всё те же градиентные методы и обратное распространение[2] .

Первая фаза (pretraining) это последовательное попарное обучение соседних слоёв сети как autoencoder. Этот метод известен как stacked autoencoders [11]. Рассмотрим процедуру предобучения подробней.

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

  1. загрузка учебного набора данных X0
  2. определить параметры сети — количество (N) и размеры слоёв
    установить номер текущего слоя i=0
  3. построить автоенкодер для слоёв i, i+1
  4. обучить автоенкодер на наборе Xi
  5. убрать вспомогательный (выходной) слой автоенкодера
  6. сохранить веса Wi связей слоёв i,i+1
  7. если есть ещё пары слоёв для обработки (i

Источник: http://mechanoid.kiev.ua/neural-net-mlp-deep.html

Глубокое обучение: быстрый старт для разработчиков

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

20 октября 201711 минут15369

Здравствуйте!

Глубокое обучение считается чем-то вроде rocket science: звучит круто, выглядит сложно и содержит всякую математику. На самом деле все не так сложно. Вот вам перевод руководства по глубокому обучению «Deep Learning for Developers: Tools You Can Use to Code Neural Networks on Day 1» от Эмиля Волнера.

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

Arif Wahid, Unsplash

Совет

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

Вам не нужна особая подготовка. Достаточно базового понимания Python, командной строки и Jupyter notebook.

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

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

Так нейронная сеть в итоге классифицирует собак и кошек.

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

Основная логика

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

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

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

Обратите внимание

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

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

Мелкая искусственная нейронная сеть

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

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

Читайте также:  Искусственные нейронные сети. основные термины и общие понятия

Все программы глубокого обучения следуют одной логике:

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

Вот код нашей сети.

# 1. Import library of functions import tflearn # 2. Logical OR operator / the data OR = [[0., 0.], [0., 1.], [1., 0.], [1., 1.]] Y_truth = [[0.], [1.], [1.], [1.]] # 3. Building our neural network/layers of functions neural_net = tflearn.input_data(shape=[None, 2]) neural_net = tflearn.fully_connected(neural_net, 1, activation='sigmoid') neural_net = tflearn.regression(neural_net, optimizer='sgd', learning_rate=2, loss='mean_square') # 4. Train the neural network / Epochs model = tflearn.DNN(neural_net) model.fit(OR, Y_truth, n_epoch=2000, snapshot_epoch=False) # 5. Testing final prediction print(«Testing OR operator») print(«0 or 0:», model.predict([[0., 0.]])) print(«0 or 1:», model.predict([[0., 1.]])) print(«1 or 0:», model.predict([[1., 0.]])) print(«1 or 1:», model.predict([[1., 1.]]))

Вывод программы:

Training Step: 2000  | total loss: 0.00072 | time: 0.002s | SGD | epoch: 2000 | loss: 0.00072 — iter: 4/4 Testing OR operator 0 or 0: [[ 0.04013482]] 0 or 1: [[ 0.97487926]] 1 or 0: [[ 0.97542077]] 1 or 1: [[ 0.99997282]]

Строка 1

Источник: https://geekbrains.ru/posts/deep_learning_guide

Глубокое обучение привлекли к распознаванию образцов в гербариях

Ученые из Технологического института Коста-Рики представили метод автоматического распознавания растений по изображениям гербариев.

Их алгоритм, созданный при помощи методов глубокого обучения, был обучен на 400 тысячах изображений растений, обитающих на территории Коста-Рики и Франции, может правильно идентифицировать растения в 90 процентах случаев.

Статья с исследованием опубликована в журнале BMC Evolutionary Biology.

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

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

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

В своей новой работе исследователи представили алгоритм автоматического распознавания растений при помощи компьютерного зрения. Их технология создана на основе сверточной нейросети (англ.

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

Важно

Для тренировки и тестирования нейросети были использованы пять баз данных: две базы данных содержали отсканированные изображения растений из гербариев, две – изображения живых растений в природе и отсканированных листьев и еще одна база данных (один миллион изображений, взятых из ImageNet) была использована для предварительной тренировки и не связана с растениями. Всего исследователи собрали около 400 тысяч изображений более чем трех тысяч различных видов растений.

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

Предварительное обучение на базе данных изображений гербариев позволило нейросети определить изображение растений в поле с точностью 66 процентов.

Кроме того, исследователи протестировали автоматическое определение растений на гербариях из одной местности (Франции) на базе данных гербариев другого региона (Коста-Рики): нейросеть научилась корректно решать такую задачу с точностью до 87 процентов.

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

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

Елизавета Ивтушок

Источник: https://nplus1.ru/news/2017/08/14/deep-learning-herbaria

Глубинное обучение для автоматической обработки текстов

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

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

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

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

Совет

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

Первые работы по глубинному обучению (deep learning) относятся к середине XX века. В начале 1940-х годов Уоррен Маккаллок и Уолтер Питтс предложили формальную модель человеческого мозга — искусственную нейронную сеть, а чуть позже Фрэнк Розенблатт обобщил их работы и создал модель нейронной сети на компьютере.

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

Однако оказалось, что, несмотря на красоту и изящество идеи имитации мозга, обучение «традиционных» нейронных сетей занимает много времени, а результаты классификации на небольших наборах данных сопоставимы с результатами, полученными более простыми методами, например машинами опорных векторов (Support Vector Machine, SVM).

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

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

Например, для классификации на два класса на выходной уровень сети можно поместить один или два нейрона, для классификации на k классов — k нейронов. Все остальные уровни в графе нейронной сети принято называть скрытыми слоями.

Все нейроны, находящиеся  на одном уровне, связаны ребрами со всеми нейронами следующего уровня, каждое ребро обладает весом.

Обратите внимание

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

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

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

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

Теоретики и практики нейросетевых технологий часто говорят об «обучении представлению» (representation learning) — в сыром тексте, разбитом только на слова и предложения, нейронная сеть способна найти зависимости и закономерности и самостоятельно составить признаковое пространство.

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

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

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

Рис. 1. Архитектуры нейронных сетей, используемые в автоматической обработке текстов

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

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

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

Важно

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

В 2013 году Томаш Миколов опубликовал работу [1], в которой предлагал использовать нейронные сети для обучения векторам слов, но для меньшей размерности: по кортежам (слово, контексты) обучалась нейронная сеть простейшей архитектуры, на выходе каждому слову в соответствие ставился вектор из 300 элементов.

Оказалось, что такие вектора лучше передают семантическую близость слов. Например, на них можно определить арифметические операции сложения и вычитания смыслов и получить следующие уравнения: «Париж – Франция + Россия = Москва»; «король – мужчина + женщина = королева».

Или найти лишнее слово в ряду «яблоко, груша, вишня, котенок». В работе [1] были представлены две архитектуры, skip-gram и CBOW (Continuous Bag of Words), под общим названием word2vec. Как позже было показано в [2], word2vec — это не что иное, как факторизация матрицы «слово-контекст» с весами PPMI.

Читайте также:  Урожайность растений можно предсказывать с помощью систем искусственного интеллекта

Сейчас принято относить word2vec к дистрибутивной семантике, а не к глубинному обучению [3], однако исходным толчком для создания этой модели послужило применение нейронной сети.

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

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

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

Совет

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

Один из подходов заимствован из области анализа изображений и заключается в использовании сверточных нейронных сетей (convolutional neural network, CNN) (рис. 2).

Рис. 2. Сверточная нейронная сеть для классификации предложения по тональности (на два класса: позитивный и негативный)

На вход сверточной нейронной сети подается предложение, в котором каждое слово уже представлено вектором (вектор векторов). Как правило, для представления слов векторами используются заранее обученные модели word2vec. Сверточная нейронная сеть состоит из двух слоев: «глубинного» слоя свертки и обычного скрытого слоя.

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

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

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

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

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

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

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

Обратите внимание

Языковые модели можно использовать и для предсказания следующего слова: какое слово с наибольшей вероятностью встретится после данного?

Рис. 3. Рекуррентная нейронная языковая модель

Для обучения языковых моделей нужны большие корпусы — чем больше обучающий корпус, тем больше пар слов модель «знает». Использование нейронных сетей для разработки языковых моделей позволяет сократить объем хранимых данных. Представим себе простую архитектуру сети, в которой на вход поступают слова i-2 и i-1, а на выходе нейронная сеть предсказывает слово i.

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

Эту проблему решают рекуррентные нейронные сети (рис. 3), в которых внутреннее состояние скрытого слоя не только обновляется после того, как на вход приходит новое слово, но и передается на следующий шаг. Таким образом, скрытый слой рекуррентной сети принимает входы двух типов: состояние скрытого слоя на предыдущем шаге и новое слово.

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

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

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

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

Важно

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

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

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

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

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

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

***

Несмотря на впечатляющие результаты, нейронная сеть не может считаться самостоятельным инструментом для анализа текста (поиска закономерностей в языке) и тем более для понимания текста.

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

Совет

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

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

Литература

Дмитрий Ильвовский (dilvovsky@hse.ru) — сотрудник Международной лаборатории интеллектуальных систем и структурного анализа, Екатерина Черняк (echernyak@hse.ru) — преподаватель центра непрерывного образования, факультет компьютерных наук, НИУ ВШЭ (Москва). Работа выполнена в рамках Программы фундаментальных исследований НИУ ВШЭ.

Источник: https://www.osp.ru/os/2017/02/13052221/

Глубокое обучение (deep learning)

Глубокое обучение (deep learning) — это про попытку собрать из каких-то маленьких абстрактностей всё более глубокие абстрактности, и так в несколько слоёв. Ну, или собрать описание чего-то в языке малой абстрактности, а сам этот язык на языке большей абстрактности.

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

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

В 2006 году получился прорыв — и программы глубокого обучения начали работать практически сразу на уровне SOTA (state-of-the-art программ, которые научились что-то делать на данный момент времении), но в сто тридцать раз быстрее и в тридцать раз меньше по памяти. Народ ахнул, и пошли эксперименты.

Неделю назад Майкрософт продемонстрировала свой переводчик с голоса на голос, и тут же появилась статья в NY Times (http://www.nytimes.com/2012/11/24/science/scientists-see-advances-in-deep-learning-a-part-of-artificial-intelligence.html), New Yorker (http://www.newyorker.com/online/blogs/newsdesk/2012/11/is-deep-learning-a-revolution-in-artificial-intelligence.html) — и далее внимание мира оказалось приковано к этой технологии, пузырь начал надуваться.

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

По-русски о deep learning (чтобы понять, как об этом говорить по-русски): http://habrahabr.ru/post/134950/

Меня меньше волнует обработка изображений и распознавание речи, меня больше волнуют лингвистические штудии на предмет построения моделей по неформальным описаниям (см. мою схему интеллектуального акта в http://dot15926.livejournal.com/37807.

html). Меня волнует мэппинг, который можно сделать между текстами разных школ управления (проект PraxOS), и я не хочу делать его полностью вручную.

Так, организация как «чего-то-провод» описывается самыми разными авторами в самых разных словах:

— у Голдрата по организации текут результаты ее работы, измеряется этот поток показателем throughput (единица приближения к цели за период).— у Андреева организация — это Жила, по которой течет сила. Бухгалтерия нужна не для счета денег, а чтобы эти абстрактные-потусторонние жилу и силу представить в «съедобном» виде, дать возможность «пощупать» в нашем мире.— процессный подход: к потребителям текут результаты операций цепочки бизнес-процессов. Это все «цепочка приращения стоимости».— сетевая организация: проводящая сеть, по которой течет информация, продукты, операции.— кооперативные схемы СМД-методологов: цепочки из актов деятельности, выходы одних направляются на любые входы других.Это все про одно и то же видение организации, как абстрактной «проводящей сущности», абстрактной трубы, по которой течет какая-то другая абстракция. Такая организация — идеальный (т.е. из области идей, нематериальный) объект, никак не наблюдаемый в мире иначе, чем через схемы, картинки, таблицы показателей.

Обратите внимание

И вот мне важно, чтобы не я сам делал такой мэппинг (отождествление) объектов разных теорий, т.е. мэппил объекты разных эпистемологических описаний (которые есть у конкретных людей и софтинок — http://dot15926.livejournal.com/38046.

Читайте также:  Mit представила очки для незрячих людей

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

Нет, я хочу, чтобы эта общая онтология экстрагировалась бы из множества формально заданных метамоделями и неформально заданных текстами эпистемологий компьютером — первый пункт из моей схемы интеллектуального акта (http://dot15926.livejournal.com/38046.html).

В этом автоматизированном поначалу, а затем и автоматическом мэппинге/определении аналогий будут участвовать и «химические алгоритмы» (т.е. нахождение аналогий по структуре концептуального графа, как это делают люди из VivoMind — http://www.jfsowa.com/pubs/analog.

htm, примеры где-то со 105 слайда в http://www.inf.ufrgs.br/ontobras-most2011/arquivos/curso1/OntobrasMostSlidesMinicurso1Sowa.

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

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

Сейчас меня больше волнует использование глубокого обучения при работе с текстами.Вот относительно свеженькие ссылки на эту тему:

Тьюториал по алгоритмам глубокого обучения для обработки текстов на естественном языке, о 186 слайдах — http://nlp.stanford.

edu/~socherr/SocherBengioManning-DeepLearning-ACL2012-20120707-NoMargin.pdf

Приложения технологии глубокого обучения к естественным языкам (продолжение тьюториала, со 196 слайда): http://www.iro.umontreal.ca/~bengioy/talks/gss2012-YB5-NLP.pdf

Важно

Разные полезные для глубокого обучения софтины на специализированном для данной теме вебсайте (правда, этот вебсайт уже год не обновляется, мои другие ссылки много свежее): http://deeplearning.net/software_links/ (обращаем внимание, сколько там софта на Питоне). Кому не хватит, есть и для Lua: http://www.torch.ch/

Выделение семантической сетки по тексту (это ну очень похоже на то, чем мы занимаемся с ABBYY): http://jmlr.csail.mit.edu/proceedings/papers/v22/bordes12/bordes12.pdf (2012), и http://www-etud.iro.umontreal.ca/~bordesa/mywiki/lib/exe/fetch.php?media=snowbird11-talk.pdf (2011).

Архитектура SENNA, которая не использует ручной настройки традиционных систем парсинга текстов, а самонастраивается «почти с нуля»: http://ronan.collobert.com/pub/matos/2011_nlp_jmlr.pdf (код: http://ronan.collobert.com/senna/, там порядка 3500 строк на ANSI C).

Первая коммерческая софтина, которая использует deep learning: http://research.microsoft.com/en-us/projects/mavis/ (доступна через облако — http://www.greenbutton.com/Applications/Incus). Она делает субтитры, находит ключевые слова, что позволяет реализовать полнотекстовый поиск по аудио и видеоматериалам с доступом по клику на найденный фрагмент текста сразу к месту в ролике.

Работа с омонимами и полисемией, используя не только локальные окрестности слов, но и глобальный контекст — http://www.socher.org/uploads/Main/HuangSocherManning_ACL2012.pdf

Мне это направление очень близко, ибо я три года в университете занимался распознаванием образов (немножко об этом я писал в http://ailev.livejournal.com/710976.html). Почему это я пишу? Я хочу прикрутить какую-нибудь интеллектуальную распознавалку к .15926 Editor, чтобы автоматизировать мэппинги. Ибо нужно бежать со всех ног, чтобы только-только остаться на месте.

Опять же, пузырь начал надуваться, и грех оставаться в стороне 🙂

Ещё меня интересуют Hybrid Reasoning Architectures (http://ontolog.cim3.net/forum/ontolog-forum/2012-11/msg00176.html), но о них будет чуть попозже.

Источник: https://ailev.livejournal.com/1044735.html

Deep Learning | Блог Дмитрия Шаменкова

Меня все больше и больше увлекают нейротехнологии, робототехника, программирование в контексте нейробиологии и социальной физиологии. Целостность расширяется, становится более материальной, живой. 

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

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

Совет

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

Сегодня в нашей закрытой группе для участников Нейронета (часть Национальной технологической инициативы) натолкнулся на замечательную книгу в рекомендации одного из участников (вот исходная цитата): 

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

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

 
Особенно сильно эти сети развились всвязи с управлением (принятием решений) большими сообществами (когда возникли большие государства) и возникновением современной науки.

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

Очень все верно сказано в цитате. Книгу уже нашел, скачал, буду читать — очень интересно. И, самое главное, применимо к нашей ситуации. Наша СУЗ — это и есть нейроморфная социальная сеть, ускоряющая самореализацию, улучшающая качество жизни.

В современности, по всей видимости, это уникальный в своем роде проект.

Я с удовольствием сейчас занимаюсь завершающей фазой его развития — пишу книгу «Синхронизация», координирую работу по пособию по СУЗ, готовлю посадочную страницу СУЗ, да и вот сам ее использую для ускорения.  

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

gallery) — это также наше общее дело, и он будет представлен на моем блоге, и развивать его буду в том числе я. Сегодня ожидаю следующего шага в глубину. Нам предстоит переработать структуру и формат моего блога shamenkov.ru, и Школы здоровой самореализации Дмитрия Шаменкова, которая в том числе, на shamenkov.ru будет представлена.

Очень творческая и интересная задача, которая отдает энергией. 

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

И, конечно, я очень благодарен всем за обратную связь к моему посту Моя практика — трансформация СУЗ — я еще не всем успел ответить (делаю это с душой, а меня так сильно трогают комментарии, что нужна пауза, чтобы прожить эту обратную связь — но отвечу всем). 

Обратите внимание

Набирают обороты наши трансляции на live.suzretreat.com — чувствуется, что это очень важное, перспективное дело.

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

Среди действующих участников suzretreat я пока особого энтузиазма в этом плане не заметил. Возможно, Андрей начнет двигаться в эту сторону… В общем, пока не знаю. Если у кого есть идеи на этот счет, желание поучаствовать — пишите — будет обсуждать, думать… 

Мне радостно, что тем временем у нас идет ощутимый ежедневный прогресс «от слов к делу» — Ирэн проводит регулярные утренние танцевальные процессы, все вместе сделали магазин Юли (покрасили, провели свет, сделали улучшения) — скоро запуск.

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

Ваня — развивает проект по психосоматике (мне очень понравилась его группа на ФБ и крайние посты) — думаю, что здесь, на портале СУЗ, ему имеет смысл сделать группу глубокой проработки переживаний (нейросеть, ориентированную на работу с психосоматикой) — эта мастер-группа будет очень эффективна — думаю, мы ее вместе с Ваней будем делать — с меня врачебная поддержка… Лешик, хоть все время и купается в долженствованиях, помогает Ване c Психосоматикой, и работает над запуском процесса по отношениям. 

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

Также у нас с Володей Грузинцевым впереди много работы над suz.community — главное — посадочная страница, устранение багов, удобство, мобильная версия и многое другое. 

Важно

Сегодня посмотрели новое видео Дикея в его группе — как-то после отъезда выпал из нашего внимания — видео порадовало, рад его реализации.

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

Но пока всего этого мало — не хватает группы, да и творческие приоритеты в основном нацелены на запуск СУЗ в свободное плавание, на мою профессиональную реализацию и на suzretreat. 

Что еще из нового? Робототехника. Сегодня натолкнулся на крутой сайт backyard brains и эксперимент с роботараканами. Все это очень интересно — сейчас огромный прогресс идет в сфере нейропротезирования.

Будем сами экспериментировать и изучать — благо, все можно заказать через Интернет (таким образом, думаю, организовать со временем на острове генетическую, нейробиологическую и роботехническую лаборатории)… Ну, а пока сосредоточимся на социальном и онлайн-программировании, нейросетях — по робототехнике обойдемся Lego Mindstorm. 

Да, сегодня в 12 часов у меня еще собрание мастер-группы, где поделюсь своими переживаниями и отвечу на вопросы участников, спроектируем персональные траектории онлайн. 

Ну, и наконец, тянет в горы понемногу… Надеюсь, через год примерно сможем сходить. 

Всем хорошего дня и отличного настроения! 

Извините за телеграфное изложение и отсутствие видео/картинок — тороплюсь перед утренней трансляцией (в 7 утра по мск — live.suzretreat.com) успеть с Данькой съездить на море. 

Источник: https://shamenkov.ru/deep-learning/

Ссылка на основную публикацию