Pull to refresh

Comments 68

Текст принято разбивать на абзацы. Абзацы выделяются либо красной строкой, либо вертикальными отступами. Спасибо.
Про Колмогоровскую сложность не знает только ленивый. Не используется она именно потому, что от требования «бесконечных вычислительных ресурсов» нельзя никак избавиться. ИНС хороши тем, что они позволяют приблизить произвольную функцию и могут (теоретически) использовать многоуровневые закономерности. Если придумают какой-нибудь универсальный функциональный аппроксиматор лучше или более эффективные эвристические алгоритмы выявления закономерностей, люди очень быстро на них перейдут.
Да, про Колмогоровскую сложность знают многие (но, вероятно, на хабре далеко не все). И принцип минимальной длины описания тоже довольно известен, хотя по прежнему его значение сильно недооценивается (если судить по тому, что в лучших учебниках по ИИ ему уделяют от силы 1 страницу, а то и абзац). Но знать о том, что такое есть, и правильно интерпретировать в рамках проблем машинного обучения — две разные вещи. Второго сильно недостает, из-за чего многие думают, что современное машинное обучение может иметь какое-то отношение к сильному ИИ. Главный же тезис статьи заключается в том, что нужно (для тех, кто заинтересован в сильном ИИ) целенаправленно заниматься универсальными методами обучения.
UFO landed and left these words here
То, что «Само по себе требование бесконечных ресурсов не делает теорию бесперспективной» — об этом, собственно, и речь. Или, точнее, речь о том, что проблему универсального обучения все равно нужно решать, и то, что известные универсальные методы требуют бесконечных ресурсов, не делает задачу неактуальной и не означает, что саму проблему можно игнорировать, занимаясь лишь «слабыми» методами обучения.
А вот то, что «если работа программы не ограничена во времени и нужно получить не абсолютный результат, а всего лишь улучшить имеющийся» — уже не совсем так. Действительно, следующей же идеей по развитию универсального метода обучения является организация перебора моделей в условиях ограниченных вычислительных ресурсов путем параллельного выполнения всех алгоритмических моделей, на каждую из которых выделяется доля ресурсов, пропорциональная ее алгоритмической вероятности. Это так называемые поиск Левина (LSearch). Кстати, из него следует интересное определение сложности по Левину, которое расширяет сложность по Колмогорову (но это отдельная тема). Собственно, Соломонов (а также Хаттер) и опирались на LSearch, оптимальность которого доказана с точностью до мультипликативной константы. К сожалению, для реальных задач эта константа может быть огромной. Как говорил сам Левин, только фрики-математики могут считать число 2^500 конечным.
Короче, для реального сильного ИИ полный перебор, пусть даже и хорошо организованный, явно не подходит. Здесь нужна самооптимизация, чтобы превратить мультипликативную константу в аддитивную (по Шмидхуберу), а также набор априорных метаэвристик, чтобы от эту аддитивную константу тоже максимально уменьшить.
UFO landed and left these words here
Верно, поэтому должны вводиться эвристики, которые не обрезают пространство моделей, а смещают их сложности/вероятности.
К примеру, у нас есть некий универсальный язык программирования. Сложности моделей, выраженные на этом языке, будут пропорциональны 2^-L, где L — длина соответствующей программы. Но если создаем некую библиотеку функций, то те программы, которые этими функциями будут пользоваться, окажутся существенно короче (вероятнее), чем если бы их писали с нуля. При этом библиотека никак не сужает универсальность в целом. Также работает и человеческий язык: на основе элементарных блоков создаются более высокоуровневые блоки, отвечающие за некие полезные фрагменты моделей (которые, к тому же, как вы правильно заметили, можно передавать от одного агента другому).
Но это лишь один из простейших (важных, но недостаточных) механизмов того, как без ущерба для универсальности можно повышать эффективность обучения.

UFO landed and left these words here
Все же есть большая разница между нулевой вероятность и очень маленькой, но положительной. Стал бы кто-нибудь играть в лотерею, в которой шанс выиграть строго равен нулю?
Смещение должно происходить по мере накопления данных, но если универсальной интеллектуальной системе не придать начального смещения, то она, по сути, будет вынуждена повторить весь путь эволюционного развития. Это очень нерационально, если можно этот процесс сильно ускорить.
В плане механизмов повышения эффективности это, в первую очередь, декомпозиция задачи обучения — построение отдельных моделей по фрагментам данных. Декомпозиция на практике не бывает полной, поэтому ее идея в целом эвристична. Ослабление негативного эффекта от декомпозиции достигается введением представлений вообще и в частности иерархических моделей и адаптивного резонанса. Об этом мы и постараемся рассказать в последующих статьях.
Еще один незамысловатый способ борьбы с этим эффектом – это перекрестная проверка, или кроссвалидация, идея которой заключается в том, чтобы из обучающей выборки выделить контрольную. При этом обучение производится по одной части выборки, а качество обучения оценивается по другой части. То есть раз уж мы хотим, чтобы наше решение хорошо работало не на тех данных, на которых мы его обучали, а на новых данных, давайте так и будем проверять. У такого подхода есть свои недостатки. Во-первых, уменьшается размер обучающей выборки, а, значит, ухудшается и качество строящейся модели.

Я не эксперт в области ИИ и машинного обучения, но когда прочитал этот абзац у меня возникла, возможно не самая бредовая мысль: а почему не разбить выборку на 2 равные части — и при оценке качества решения обучать по 1-ой группе и проверять по 2-ой и наоборот? А потом брать среднее от решения в обоих случаях? Может кому-то эта идея поможет
На самом деле (хотя в статье об этом не говорится) универсальный метод предсказания по Соломонову и подразумевает усреднение по всем корректным моделям с определенными весами. В этом смысле Ваша идея может быть вполне работоспособной (если она уже кем-то не используется), однако, в статье речь шла о том, что сам метод перекрестной проверки несколько ущербен.
Так все и делают, конечно. Чаще всего выборку разбивают на большее число частей (например, 10) и одну используют для валидации, а остальные для обучения.
Ну, идея-то была в том, чтобы по результатам обучения по разным подвыборкам строить композицию классификаторов.
И если удастся «хотя бы» использовать алгоритмы произвольного вида в качестве моделей, то возможности машинного обучения невообразимо расширятся.

eval($algorithm); ? :) А если серьёзно, то теорема Бёма-Якопини доказана полвека назад и использование алгоритмов произвольного вида вроде бы проблемы не должно составлять. Проблема в их генерации методом отличным от полного перебора или рандома, нет? То есть необходим алгоритм сужающий пространство решений по сравнению с множеством всех возможных алгоритмов. Скажем генетический алгоритм или ещё что-нибудь из эволюционных вычислений.

Или я процитированную фразу как-то не так понял?
Об этом, в общем, и речь. Под «использованием» подразумевалось такое использование, которое будет работать на практике, то есть не полный перебор и не рандом. Сам Соломонов в начале 2000-х как раз пытался использовать генетические алгоритмы. Но это, скорее, от безысходности. ГА не универсальны как метод поиска/оптимизации примерно в том же смысле, в котором ИНС не универсальны как метод обучения. Но это в статье не обсуждалось, и вся эта проблематика скрыта в последней фразе: «Как приблизиться к решению проблемы – тема для отдельного непростого разговора. „
Мы подумаем. Есть опасения, что статья на подобную тему будет интересна слишком малому числу людей. Если удастся об этом рассказать популярно, выложим на хабре; если нет — научные материалы на эту тему в любом случае выкладываем на своем сайте.
Будет интересно, не сомневайтесь
Зря вы так, никто ничего не скрывает. В той же книжке Бишопа подробно описана проблема переобучения и приводятся примеры, когда имеет смысл использовать байесовский prior, и как его испльзовать.

Что же касается поиска в пространстве алгоритмов — так все понимают, что в этом и есть проблема: как искать и где. А проблема определения закономерного-случайного до сих пор не определена. Буквально вчера смотрел хорошую лекцию Ширяева на эту тему.

Вообще, статья хорошая, спасибо. Наконец-то не псевдонаучный бред, а что-то по делу. Хотя, я чувствую умельцы по части сильного ИИ скоро подтянутся и начнут неистово комментить :).

ps на статью Соломонова можете ссылочку скинуть?
Книжка Бишопа — это как раз очень хороший пример того, о чем говорится. Это обширный современный учебник по машинному обучению и распознаванию образов, и в нем ни слова не сказано ни про Колмогоровскую сложность, ни про принцип минимальной длины описания, ни про универсальную индукцию по Соломонову. Байесовские приоры — да. Но сами они без всего указанного превращаются лишь в эвристики, относительно которых даются практические рекомендации по созданию слабых (неуниверсальных) методов машинного обучения.
А Вы говорите, не скрывают :)
За ссылку на лекцию спасибо, послушаю, хотя есть подозрение, что там будет про классические результаты.
Публикации Соломонова есть здесь:
world.std.com/~rjs/pubs.html
Хотя им, конечно, в этой области все не ограничивается.
В книжке есть немного про теорию информации и энтропию. Но о чем еще писать в учебнике, как не о практическом приложении? Покажите мне как использовать колмогоровскую сложность для решения моих практических задач классификации — охотно буду ее использовать.

На сколько я знаю, Воронцов в своих лекциях использует понятие алгоритм и поиск в пространстве алгоритмов явно. Но опять же, все сводится к стандартным методам, или эвристикам, если хотите. (кстати, Воронцов использует «урезанную» аксиоматику Колмогорова. Забавная штука, правда сильно не вникал)

Задам делетантский вопрос, т.к. не спец в теоретическом cs. Под поиском алгоритма, вы, грубо говоря, предлагаете перебрать все машины тьюринга до нахождения нужного алгоритма? :)

Учебники разные бывают. Никто не спорит, что прикладное машинное обучение чрезвычайно полезно, и о нем надо писать в учебниках. Но бывают учебники и с описанием фундаментальной науки, например математики или физики, где про приложения почти ничего не говорится. Машинное обучение отнюдь не сводится к одним только приложениям. И чтобы не застрять «в локальном экстремуме» исследований, нужно отказаться от руководства критерием локальной практической полезности.
Если бы Вы Гёделя, Тьюринга, Чёрча или еще кого в 1930-х годах спросили, а как их абстрактные математические изыскания непосредственно использовать на практике, вряд ли бы получили удовлетворительный ответ. А ведь именно они и привели к созданию компьютеров. С сильным ИИ ситуация аналогичная (если не еще более выраженная). И универсальное обучение — лишь один из аспектов. Сейчас напрямую использовать колмогоровскую сложность для решения практических задач нельзя (но ее упрощенные производные типа принципа минимальной длины описания — очень даже можно, о чем есть соответствующие книжки, если не читали). Но речь, как и в случае с созданием компьютеров, не о непосредственном прикладном использовании сейчас, а о разработке решения для создания сильного ИИ в будущем.

Что касается Воронцова, то, да, он начал направлять по-немногу Журавлевскую школу распознавания образов в нужное русло, но пока смена курса там не слишком значительная.

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

Каков критерий или каковы критерии того, когда «обучение» становится действительно обучением?

И чем, наконец, «машинное обучение» отличается от простого или «универсального»?
В статье, в общем-то, на первые вопросы ответы есть: универсальное обучение — это обучение, в котором нет ограничений на то, какого вида закономерности могут быть сформированы. Последний вопрос не очень понятен. Машинное обучение отличается от «простого» тем, что подразумевает обучение машины, а не человека. От «универсального» оно отличается тем, что может быть (и сейчас является) не универсальным, хотя (как мы надеемся) может быть и универсальным.
Хорошо, тогда ЧЕМУ именно обучается «машинное обучение»?
Это вопрос типа: «Куда едет езда?» ))
Согласитесь, на него затруднительно что-то вразумительное ответить.
Но все же, если пытаться на него ответить, то ответ можно также найти в статье: в конечном итоге интеллектуальная система учится предсказывать результат отображения между некоторым входом и выходом.
Насколько это мне известно, любое обучение человека подразумевает научение его чему-нибудь, например, знаниям в области программирования или навыкам в области вождения автомобиля.

Обучение, как правило, это учёба с преподавателями или самообучение по каким-то критериям и алгоритмам.

Теперь экстраполируем это на компьютер.

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

Машина не может приобретать навыки НЕ СЧЁТНОГО характера, поскольку ЭВМ это по определению счетное устройство, работающее по заданной программе. А программу сам компьютер без вмешательства человека не способен изменить.

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

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

Вот я и спросил, чему же в Вашем случае обучается компьютер?
Компьютер не может приобретать знания, поскольку никто в мире ещё не придумал формат хранения знаний.

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

А программу сам компьютер без вмешательства человека не способен изменить.

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

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

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

Вот я и спросил, чему же в Вашем случае обучается компьютер?
Ответ прежний: система учится предсказывать результат отображения между некоторым входом и выходом. Можно добавить — путем построения моделей.
Для большей конкретики нужно разбирать вопрос о структуре этих моделей.
Считается, что человек может обучаться Данным и Знаниям.

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

Считается, что программисты пока НЕ МОГУТ научить машину новым Знаниям, поскольку не могут извлекать смысл из текстов.

Считается, что смысл пока не извлекается, так как пока его не смогли формализовать.

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

Было бы интересно узнать, если Вы преодолели проблемы, связанные со знаниями и извлечением смысла.
Куда уж программистам извлекать смысл из текстов :)

А если серьёзно, то не вижу смысла в словосочетании «обучать данным». Для меня обучение — это получение знаний, а получение бессмысленных данных — это неосмысленное запоминание, и то сомневаюсь, что я смогу какие-то данные запомнить абсолютно абстрактно без создания пускай и неосознанных, но связей. И программисты давно научились наделять поток данных смыслом для машины. Теперь стоит задача, чтобы она сама смогла наделить их смыслом.
Машина не может приобретать навыки НЕ СЧЁТНОГО характера, поскольку ЭВМ это по определению счетное устройство, работающее по заданной программе.

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

Наверное, можно всё, но для этого надо ЗНАТЬ, как описывать.

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

Лица тоже они нашли в ходе того же эксперимента, афаик.
да, вариант — подключить википедию
поискал в статьях картинку и опа я такую знаю, а статья про кошку.
Главное чтобы лицо не нашли по facepalm.jpg или как там его :)
Ну, у гугла это больше пиар. Сами они там принципиально нового не сделали, хотя эксперимент и интересный.
А вот в плане «ткнуть пальцем и спросить» (то есть в плане семантического обоснования символов и понятий) давно и достаточно успешно работает группа Дэба Роя из МТИ.
так их кластер уже понял, что кошки не похожи на людей и что кошки это кошки?
>Компьютер не может приобретать знания, поскольку никто в мире ещё не придумал
>формат хранения знаний.

А как же RDF? Уверен, что есть много менее распиаренных форматов хранения знаний.
RDF, как и XML и другие подобные им инструменты, является лишь хранилищем МЕТА-ДАННЫХ, что не является ЗНАНИЯМИ.

Пока Знаниями обладает только человек, его Сознание.

Знаний нет ни в Интернет, ни в книгах, ни в подобных хранилищах кодированной Информации.

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

Наша группа iknowww.ru как раз этим и занимается. Разработкой стандарта хранения Знаний.
Собственно сейчас оно обучается, вернее машину обучают решать задачи конкретного вида, в шахматы там кого-нибудь обыграть, лицо чьё-нибудь распознать и т. п. В общем «натаскивают на ЕГЭ», но не «учат учиться»
UFO landed and left these words here
Да, и в статье об этом сказано :)
Имеем чисто парадоксальную ситуацию. С одной стороны, есть абсолютно очевидный тезис (хотя, не исключено, не все с ним согласятся). А с другой стороны, когда доходит до дела, этот тезис усиленно игнорируется. За деревьями становится не видно леса. В частности, за огромной кучей частных результатов в области машинного обучения напрочь теряется ее конечная цель.
Я в своих экспериментах использовал сети с произвольным числом нейронов, но проблемы переобучения не встречал.

Может быть не очень понял мысль, но почему даже в примере это обучение без учителя? Вот же девять точек. Сначала учим предсказывать вторую, зная правильный ответ. По результатам добавляем/удаляем нейронов. Потом учим предсказывать третью и так далее, пока не настанет время предсказать красную.
Какой архитектуры сети Вы используете, для решения каких задач, и как выбираете число нейронов?
В примере обучение с учителем. Добавлять точки инкрементно или нет — дело вкуса. ИНС при правильном добавлении/удалении нейронов эту задачу могут решать без переобучения, но обобщение и предсказание у них будет плохим, если закон формирования данных в рамках выбранного типа ИНС оказывается непредставимым.
использую свои разработки на базе "САМОЗАРОЖДАЮЩИЕСЯ И РАЗРУШАЮЩИЕСЯ СТРУКТУРЫ"

Задача личный интерес к теме, проверка идеи экспериментом.

Число нейронов само выбирается по заданным при компиляции установкам.

Причем у меня нейроны хранятся в базе mysql, а в память они подгружаются при изменении их структуры. Это сделано для того, чтобы задавать вопросы структуре можно было снаружи с любого хоста.
Если это не стандартная архитектура ИНС, то надо разбираться…
В любом случае, если число нейронов выбирается по каким-то априорным установкам и не увеличивается при обучении для увеличения точности работы по обучающей выборке, то опасность переобучения будет малой, но потенциальное качество обучения будет ниже, чем при правильном выборе адекватного числа нейронов.
Правильный выбор адекватного числа нейронов, какого типа эти нейроны и кто с кем из них связан это и есть задача СР-сети.
Тогда вполне естественно, что Вы не встречали проблему переобучения, раз используете метод, в котором как-то решена проблема выбора числа нейронов и связей. Кстати, не могли бы в двух словах сказать, на каких принципах этот выбор осуществляется там?
Спасибо, но просьба была «в двух словах сказать, на каких принципах этот выбор осуществляется там?»
нейроны добавляются только для подгона ответа к обучающей выборке до нужной точности
слабые нейроны уничтожаются
Тогда остается вопрос, что такое «нужная точность»; что будет, если эту нужную точность очень сильно завысить?
будет рождаться много слабых нейронов, чтобы добиться этой точности и на следующем шаге гибнуть, если погрешность будет выше их жизненных сил
а если они реально очень точно угадают функцию и погрешность будет еще меньше их сил, то это будет epic win
Ну, то есть «жизненные силы» — это просто эвристическая замена второго компонента критерия минимальной длины описания… О том и речь, что этот критерий многократно переизобретается в частных формах в разных методах и задачах, и люди об этом даже не догадываются.
Красивый пример. Можете скинуть координаты ваших 10 точек, хотелось бы немного поэкспериментировать именно с этим.
К сожалению, в явном виде они не сохранились, так как получались при использовании рандома (да и точные значения параметров самой функции сейчас не восстановить). Но, во-первых, аналогичный пример построить очень легко (взять некую регулярную функцию и добавить шум); во-вторых, если нужны именно эти точки, можно их координаты по картинке измерить — дело пяти минут.
Приятно иметь дело с людьми читавшими Минского :)

> Даже если перцептроны при этом не переобучаются

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

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


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

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

А какое более верное второе?
Первое привело к разным результатам, местами не столь плохим. Хотя пропагандой данного подхода мы не занимаемся и считаем его частным, просто хотелось отметить, что такое в принципе имеется.
Насчет второго это долгий разговор. Но если кратко — попробуйте создать ИИ на основе этих принципов и поймете, что их отнюдь не достаточно. Подробнее об этом есть в книжке «Искусственный интеллект и универсальное мышление», но она пока в печати.
Only those users with full accounts are able to leave comments. Log in, please.