Некоторые (далеко не все) области применения нейронных сетей

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

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

В последнем пункте я ничего не говорил о том, за какое время они смогут решать эти задачи и при каких характеристиках компьютеров. Даже если производительность НС будет равна производительности мозга (что по мнению Рея Курцвейла, вопрос десятилетий), всё равно мы не знаем, как именно работает мозг и не предобучены ли его части заранее. Здесь я имею в виду «генетическую память», сформированную миллионами лет эволюции. То есть структура связей и их сила (читай — веса в НС) у нейронов в человеческом мозге могут быть заданы сразу при рождении, а в течение жизни происходит их адаптация под конкретную среду. Например, Ноам Чомски (известный лингвист) считает, что некоторая грамматика языка (базового класса языка в терминах ООП, если угодно) уже есть в голове при рождении. Но давайте рассматривать менее отдаленное будущее и даже настоящее.

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

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

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

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

Итак,

  1. Вы можете использовать НС для того, чтобы определить что-либо на изображении (задача классификации). Это может быть рукописная цифра, кошка, собака, лицо или опухоль — НС всё равно. Соответственно, можно применять в любых областях, где у Вас есть изображения (фотографии) и интересующий Вас объект. Распознавание эмоций, распознавание дорожных знаков, автомобильных номеров, секретных объектов на картах, что угодно.
  2. НС может стилизовать изображение. Пример можно посмотреть на КДПВ. Обучить НС на картинах известных художников, а потом изменить свою фотографию под выбранный стиль. Например, Prizma делает это (интересно, мне заплатят за рекламу?). Что-то похожее для видео — MSQRD, который купил Facebook. Для речи можно представить себе её искажение. Ну и для звуков — стилизацию музыки.
  3. НС может искать среди других изображений объекты, похожие на тот, который есть на Вашем. Например, FindFace.ru. Как я понимаю, в нём работает Наталья Ефремова, которая сделала доклад о НС и статья которой есть на Хабре.
  4. НС может генерировать новые изображения. Писать новые тексты, создавать музыкальные произведения. Идея проста и элегантна: Вы обучаете НС, а после инвертируете выход с входом.

    image

    Картинка уже не так актуальна.

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


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

Это были некоторые (не все) области применения НС.
Спасибо за внимание!

© Geektimes