Искусственный интеллект

индекс
244,28

Об обучении нейросетей

image
Это статья уровня 2 (см. ниже).
Статья является логическим продолжением моего рассказа про сверточные нейронные сети и их применения для распознавания изображений.
Прежде чем продолжить хочу дать понимание чем же все таки занимаются люди из области Машинного обучения и какова их глобальная цель. Глобальная цель — это порабощение всех людей машинами создание методов и алгоритмов, способных путем обучения выстраивать сложные и нелинейные модели внешнего мира. В качестве пояснения предлагаю взглянуть на картинку, благодарно позаимствованную из [1]. Сейчас человечество уже умеет создавать алгоритмы, способные учится простым операциям, но что насчет такого вот преобразования — у нас есть изображение сидящего человека которое по сути является сырым вектором значений яркости картинки в каждой точке. И нам необходимо постепенно повышая абстрактность этих сырых данных сделать вывод «человек сидит». Отсюда собственно главный вопрос: Как создать систему способную не только понять простые (пусть и нелинейные) зависимости, но также обучиться сложным, многомерным и многоуровневым иерархиям представлений реального мира?

В этой связи стоит заметить, что некоторые трудноформализуемые задачи успешно решаются т.н. жесткими (hard-wired) методами. Но если та же задача была решена на том же качественном уровне и с соизмеримыми затратами ресурсов, то такой результат ценится больше, поскольку система добыла знания сама в процессе обучения.
Возвращаясь к теме СНС напомню, что они успешно используются в различных задачах распознавания, причем не только изображений, но также временных последовательностей (речь), а при определенном усовершенствовании могут не только классифицировать, но и генерировать и оценивать. Основная фишка сверточных нейронных сетей, отличающая их от всех остальных — это искусственное наложение ограничений на веса, а также послойное изменение размеров входа и локальное восприятие. И если послойное изменение размера карты признаков — это просто трюк, чтобы обеспечить инвариантность к масштабу, а локальное восприятие идея хорошая но довольно старая (неокогнитрон, 70е годы), то вот искусственное введение ограничений или другими словами механизм разделяемых весов — довольно интересная штука. Ряд отцов-нейросетивиков (Хинтон и его последователи) признали, что до сих пор нормально обучить нейросеть с более чем 3 слоями с помощью обратного распространения никому не удавалось и вряд ли удастся [1], за исключением именно СНС. И в качестве причины такой исключительности называется именно свойство разделения весов.
Идея разделяемых весов очень близка к идее разряженных признаков (sparce features) [2], смысл которых в следующем. У нас есть некая обучаемая система, которая принимает данные в сыром виде на входе, а на выходе выдает их в некотором своем представлении, т.е. формирует карты признаков. Идея разряженных признаков заключается в том, что при обучении систему нужно насильно склонять к использованию как можно меньшего количества выходов в процессе представления входных данных. Такое насилие обычно достигается путем введения т.н. штрафа за неразряженность (sparcity penalty). И в этом мне лично видится отличная аналогия с тем, как работает наш мозг. Во всем огромном разнообразии мира развивающемуся человеку (ребенку) можно свихнуться если стараться запоминать все подряд, поэтому естественным является то, что запоминать нужно признаки, наиболее общие для всех окружающих нас явлений и предметов. Таким образом в голове строится некий словарь образов, который затем используется нами для понимания всего остального мира. Причем на каждом уровне иерархии свой словарь. В качестве примера можно привести методику изучения языка когда вам показывают зеленое яблоко и говорят, что это green apple, а затем показывают два яблока и говорят, что это two apples. Из этих двух ситуаций мозг выделяет то, что было общим для обоих и понимает, что такое apple. Таким же образом введение штрафа за использование слишком большого количества выходов для кодирования данных ведет к обучению системой использования образов, как можно более общих для всех входов.
Теперь думаю становится яснее зачем в сверточных нейронных сетях искуственно ограничили количество весов, использующихся для обработки входных данных.
Думаю пока достаточно, продолжу эту тему в следующих статьях.

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


[1] Yoshua Bengio, Learning deep architectures for AI (2009), in: Foundations and Trends in Machine Learning, 2:1(1--127)
[2] M. Ranzato, Y. LeCun, «A Sparse and Locally Shift Invariant Feature Extractor Applied to Document Images». International Conference on Document Analysis and Recognition (ICDAR 2007), Curitiba, 2007
+44
12 февраля 2010, 12:44
88

комментарии (32)

+6
ra1nbow #
Очень интересно, обязательно продолжайте!
НЛО прилетело и опубликовало эту надпись здесь
+1
safright #
обычно, системы на основе сетей обучаются по огромному числу примеров — хорошо, если сотни или тысячи. Проблема в том, что при малом числе примеров веса являются очень грубым приближением, либо отображают не совсем то, что хочет «учитель». Известный пример — пытались для армии сделать штуку, которая бы на картинке различала танки. Сделали, обучили. А потом оказалось, что система различает не танки, а фон (по некоей причине, все примеры обучения использовали примерно один и тот же фон).
+2
intelligenceAgent #
Да, вы правы проблема количества обучающих примеров довольно остра. Но все не стоит на месте. Есть такая база, называется Caltech 101, очень активно используемая разными научными командами для теста алгоритмов классификации. Так вот в этой базе на многие классы приходится всего 50 картинок, причем полностью отсутствует какая-либо нормализация. До недавнего времени лидерство пренадлежало Фильтрам Габора+SVM, но не так давно удалось на нейросетях добиться близких результатов (разница около 2%). Я думаю раскрою эту тему в будующем.
А по поводу танка — создание хорошей обучающей выборки тоже не простая задача.
0
savitar #
В таких задачах, в любом случае, нейросети не обойтись без «фокуса внимания». Сеть должна активничать, разглядывая изображение, исследовать его.

Шаг первый: беглый взгляд на фото, похоже есть фигура человека.
Шаг второй: обегаем контуры, подыскивая где ноги-руки-голова.
Шаг третий: вглядываемся в лицо. Да, это точно человек.
0
intelligenceAgent #
В каком приближении вы описали нынешний подход к распознаванию. Но идея, которая описывается в статье предполагает как раз, что система видит всю картину. Сначала выделяет в ней какие-то особые группы пикселов, затем на следующем уровне иерархии эти группы пикселов объдединяются и формируют части, дале части образуют целое и т.д. в плоть до самого высокого уровня иерархии.
+2
multik #
Интересно, а кто-нибудь выкладывал обзор идей Норберта Виннера на хабр? Это вообще будет кому-нибудь интересно? Стоит попробовать или нет?
+1
deGreeZ #
да, будет интересно. да, стОит попробовать.
+1
multik #
ок — попробую
+1
safright #
Автор, поясни про карты признаков.

ИМХО чисто на нейронных сетях задачи ИИ не решатся. Для этого нужны онтологии и прочие штуки, которые будут *сознанием*. А нейроные сети — это скорее механизм для восприятия и «фонового», неосознанного разделения.
0
intelligenceAgent #
Поясню на таком примере. Пусть у нас не нейросеть, а некий фильтр. Суть фильтра, допустим в выделении вертикальных линий. Очевидно, что если пропустить все изображение через такой фильтр, то на выходе останутся в основном вертикальные линии и все, что из них можно составить. Другими словами это будет карта признаков, а собственно признаком является вертикальная линия.
По второй части комментария. Я понимаю о чем вы говорите. НС выглядит не очень подходящей для задач, в которых нужен какой-то логический вывод, составление плана и т.д. Но с другой стороны если существуют НС, способные генерировать траектории, то почему не может быть НС, способных генерировать план действий.
0
safright #
спс, стало понятней

насчет того, что может существовать такая сеть — я не сомневаюсь. Другое дело, что это напоминает «если в руках молоток — все вокруг кажется гвоздями».
Главный недостаток такого подхода в том, что реализую функции, нехарактерные для данной системы неизбежно приходится использовать всевозможные костыли, и процесс этот идет по нарастающей. А все известные мне костыли и прочие «навесные элементы» приводят ситуацию к абсурду — вместо изучения концепции изучается реализация концепции со всеми примененными для этого финтами и хитростями. В итоге появляется иллюзия сложности и все постепенно стопорится.
0
intelligenceAgent #
С научной точки зрения — идеал, это создать систему которая могла бы обучиться всему, чему может обучиться человек. И любое усовершенствование в этом направлении трудно будет назвать костылем. Это самая что ни на есть теория. А костыли — это обычно удел практики.
0
3d6 #
На нейронных сетях вполне можно построить ИИ, примерно таким образом:
1. есть множество небольших полносвязных сетей, каждая из которых соответствует определенному образу, понятию — элементу онтологии (возможно, развернутому во времени понятию — у сети может быть не просто активное состояние, а активный устойчивый цикл состояний).
2. связи между этими сетями устроены так, что близкие в том или ином смысле понятия связаны — активация одной сети так или иначе подталкивает к активации те сети, с которой она связана.
3. в процессе столкновения с внешним миром обучаются как отдельные сети, так и связи между ними.
Такая штука (возможно, с определенными доработками) вполне может реализовать интеллект, причем, что весьма важно — самообучающийся.
+2
rgaliull #
сложно написано…
0
intelligenceAgent #
Виноват, буду исправляться.
+1
seo_mosk #
Как считаете, построение своей нейронной сети и обучение ее на результатах выдачи Яндекса позволит приблизить результаты поиска этой сети к результатам поиска Яндекса настолько, что можно будет предсказывать влияние того или иного фактора на позиции сайта? Это если учесть, что наиболее весомые параметры алгоритма нам известны.
0
intelligenceAgent #
Я сам считаю, что на сегодняшний день для задач ранжирования лучше SVM (который тоже можно считать особой нейросетью) ничего не справляется.
А вообще, я не специалист, но разве данные, которые входят в формулу ранжирования, используемую Яндексом не общеизвестны?
Если же не известна сама формула, то имея опытные данные можно восстановить с некоторой точностью эту формулу с помощью НС, и опытным путем определить какие входы как влияют.
0
gamp #
Лучше SVM для задачи ранжирования справляется бустинг решающих деревьев. Он, как мне кажется, Яндексом и реализован с большим количеством тонкостей.
0
gamp #
ну а что Вам даст сырой результат поиска? Он Вам даст отранжированный набор url-ов. Не будете же вы сравнивать url-ы. Чтобы сравнивать сайты, вам нужен робот, который бы облазил все сайты и нагенерировал признаки, которые вообще говоря, очень сложные. Среди признаков есть и такие, которые рассматривают весь граф ссылок, которые ведут на сайт и с сайта (PageRank). Как Вы их будете считать? А без признаков нейронная сеть будет бесполезна.
Но даже имея все признаковые описания страниц, Вам придется столкнуться с таким количеством проблем… Вы еще сто раз подумаете надо ли оно Вам. :)
0
3d6 #
Немного провокативный вопрос в самом начале :) Но если я правильно понял детали алгоритма, сверточная сеть в принципе не может построить признаки «человек сидит» — как максимум, мы можем отдельно построить признак «человек», дав много картинок с людьми, и отдельно, возможно даже другой сетью — «сидит», дав много картинок с сидящими людьми/животными/роботами. Если же поставить целью обучения отличать сидящего человека от всего остального, то сеть построит признак «сидящий человек», который никак не будет распадаться на «человек» и «сидит».
0
intelligenceAgent #
Как только будет ответ на поставленный вопрос, считайте, что ИИ создан. Я лишь пояснил как научное сообщество пытается продвигаться в этом направлении, и какие идеи для приближения этого реализованы в СНС.
Т.е. я хочу сказать, что речь не просто в том, чтобы распознать, что это человек. Это вполне реально уже сегодня. Речь о том, чтобы система смогла самостоятельно выстроить глубокую иерархию абстрактных образов, начиная с самых низших и заканчивая самыми высшими.
0
ererer #
Я, признаться, так и не понял, какая задача тут решалась. Кластеризация? Классификация? Распознавание? Ассоциативная память? Или всё сразу? Или что-то среднее? Или что-то новое?
К тому же за свои немногочисленные, но всё же годы практики, я так и не встретил необходимости в нейросетях с количеством слоёв больше одного. Хотя я догадываюсь, где они могли бы быть полезны, но хотелось бы услышать ваше мнение (вы ведь зачем-то взялись за сверх-многослойные сети).
В остальном же надеюсь как-нибудь помочь вашему нелёгкому труду популяризации ИНС =) Чуть позже.
0
intelligenceAgent #
1. В отличие от предыдущей статьи здесь пока не ставилась практическая задача. Это больше вступление, для следующей части.
Если говорить о теории Machine Learning, то там задача путем обучения построить модель мира, иерархию признаков. Это так называемая глубокая архитектура, которую однослойная НС уже не в состоянии воссоздать.
2. Если вы говорите о полносвязных сетях, то их, как я написал в статье, толком и не научились обучать (3 слоя имелось ввиду с входным и выходным). Поэтому особо нигде. Если говорить об СНС, в которых обычно 6-10 слоев, то могу привести массу примеров, в том числе и коммерчески успешных. Например, в штатах около 10% всех банковских чеков обрабатывается СНС.
И еще. Я не утверждаю, что обычные многослойные нейросети способны решить поставленную задачу. Напротив, в следующей статье постараюсь рассказать, как с этими задачами пытаются справиться Autoencoders, Restricted Boltzman Machines, Energy Based Learning. (назвал все на языке оригинала, чтобы легче было найти)
0
Nashev #
Идея разделяемых коэффициентов Вам не кажется афизиологичной, не имеющей аналога в мозгу?
0
intelligenceAgent #
Если сравнивать буквально — то не имеет. Если концептуально — то имеет. Поясню. Трудно представить, чтобы синапсы различных нейронов как-то синхронизировались между собой. С другой стороны известно, что мозг пытается выделять наиболее общие признаки и из них уже строить признаки следующего уровня иерархии. В этом смысле разделяемые веса заставляют сеть обучатся не частностям, а наиболее общим признакам.
0
Nashev #
Если входную матрицу сигналов перевести из параллельного отражения на нейронную сеть в последовательное, то для построения цепочки-свёртки хватит одной детектирующей группы с одним комплектом коэффициентов, и что-то мне подсказывает, что мозг скорее по такому пути ходит…
0
intelligenceAgent #
Да, но то что вы сказали правильно для свертки в классическом понимании этого слова. Т.е. последовательно, фрагмент за фрагментом. Вы считаете, что в мозгу Фоннеймановская архитектура? =)
Я думаю что все максимально распаралелено.
0
Nashev #
Думаю, параллельно работают различные детектирующие группы.

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

P.S.: На мой взгляд в такой схеме всё хорошо, но есть одна беда — я тут не вижу места самосознанию… :(
0
intelligenceAgent #
На самом деле о мозге уже довольно многое известно. И как я уже писал СНС — это аналогия так называемых сложных и простых клеток в зрительной головного мозга. Еще один успешно примененный на практике инструмент, созданный на основе знаний сложных и простых клетках — это фильтры Габора.
Возвращаясь к сути вопроса, самосознание — это всего лишь более полная модель внешнего мира.
Как работает обученная сверточная сеть? На вход подаем изображение, после первого слоя у нас картина довольно ясная — это карты признаков, отфильтрованные, различными фильтрами. Т.е. где-то выделены контура, где-то углы и т.д. Но чем дальше проходишь от слоя к слою, тем менее понятным становится выход. По мне так это и есть рождение абстрактного образа, который уже трудно напрямую связать с реальностью. А чем наше самосознание не является оперированием такими вот образами, только с еще гораздо более высокой степенью абстракции и стоящих значительно выше в этой иерархии.
Хотя, конечно, хочется верить, что мы не просто какая-то нейросеть.
0
Nashev #
Про свёрточную сеть — это да, и уровни с абстрактными смыслами — тоже да, но вот мне кажется что в мозгу она работает в последовательном режиме, а не в параллельном, и соответственно не требует многократного дублирования одинаковых нейронных групп.

А самосознанием я назвал внутренний «слух», которым мы «слышим» свои мысли. Внутреннее зрение, которым мы воспринимаем визуальные образы воспоминаний или фантазий. То самое, что в одной из старых теорий называется Гомункулусом, в другой — Пурушей.

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

Но всё ж вряд-ли мы что-то больше чем ходячая нейросеть, так что я бы не обольщался. :)
0
Nashev #
Во, кстати! Мне тут подумалось, что вполне могут быть отдельные (похожие друг на друга и почти дублирующиеся) нейронные группы, распознающие, например, чёткие края на периферийных частях поля зрения, но их «выводы» приводят не к распознаванию образа, а к повороту глаз. Чтоб эта замеченная граница оказалась спозиционирована на той области в центре сетчатки, к которой подвязаны нейроны, таки приводящие к распознаванию образов!

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

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