Как стать автором
Обновить

Комментарии 32

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

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

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

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

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

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

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

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

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

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

Публикации

Истории