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