Пользователь
0,0
рейтинг
18 июля 2012 в 11:07

Идеальный ученик, или о чем умалчивают в машинном обучении

Ранее habrahabr.ru/post/145309 мы сделали обзор подхода к универсальному искусственному интеллекту (ИИ). Но что такое универсальный ИИ? Чего именно недостает современным практическим системам ИИ, чтобы называться универсальными? Для большей конкретности обсуждения этого вопроса давайте рассмотрим его на примере машинного обучения, являющегося необходимым компонентом ИИ.

Машинное обучение давно переросло границы области академического искусственного интеллекта и пришло к «обычным программистам». Во многих прикладных задачах используются практические методы data mining'а, распознавания образов, статистического вывода и т.д. Крупные фирмы устраивают разные курсы и школы по автоматическому анализу данных, создают базовые кафедры, участвуют в организации конференций и прочими способами несут в мир свет знания, накопленного в области машинного обучения. Ученые тоже не отстают: придумывают новые методы и прорабатывают новые подобласти, такие как модное ныне трансферное обучение.

Однако такое развитие этой области вширь не особо способствует ее развитию вглубь. Напротив, распространяются упрощенные истолкования основ машинного обучения (несмотря на то, что эти истолкования нередко подкреплены достаточно сложной теорией), позволяющие получать частные практические решения. Последнее, конечно, неплохо, но проблема универсальных методов машинного обучения остается нерешенной (и даже проигнорированной). При этом, с одной стороны, в среде «прикладников» популяризовались мифы об универсальных методах машинного обучения (типа нейронных сетей), которые в действительности таковыми не являются. С другой стороны, в среде «теоретиков» пропала вера в возможность создания универсальных методов машинного обучения, что выражается в том, что на любые попытки предложить какой-то новый универсальный метод априорно навешивается метка «Yet Another Classifier» или вспоминается «No Free Lunch» теорема.

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

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

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

image
Рис. 1. Как продолжить точки?

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

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

Будем подбирать параметры многочленов разных степеней так, чтобы эти многочлены проходили наиболее близко к точкам обучающей выборки, то есть используем метод наименьших квадратов, который в данном случае имеет весьма простую реализацию. На рис. 2 показаны решения для линейной функции, параболы и кубической функции. Последняя (красная) точка не вошла в обучающую выборку и соответствует истинной зависимости.

image
Рис. 2. Результаты построения многочленов 1-й, 2-й и 3-й степеней.

Как будто все хорошо: за счет увеличения степени многочлена удается как уменьшить отклонения от точек обучающей выборки, так и улучшить точность предсказания. Но попробуем продолжить увеличивать степень дальше. На рис. 3 показаны решения для многочленов 4-й, 7-й и 10-й степеней.

image
Рис. 3. Результаты построения многочленов 4-й, 7-й и 10-й степеней.

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

Здесь возможны разные подходы. В случае некоторых классов нейронных сетей обучение специально прерывают, пока ИНС не успела слишком сильно подстроиться под данные (при этом выработаны даже специальные эвристические критерии, определяющие наиболее подходящий момент для остановки обучения). В этой связи данный феномен имеет и второе название – переобучение (overlearning). Говоря по-простому, это зубрежка, при которой система концентрируется на конкретных примерах. Этот недостаток свойственен и обучению учащихся, если их обучение и оценка его качества производится по одним и тем же тестам.

Еще один незамысловатый способ борьбы с этим эффектом – это перекрестная проверка, или кроссвалидация, идея которой заключается в том, чтобы из обучающей выборки выделить контрольную. При этом обучение производится по одной части выборки, а качество обучения оценивается по другой части. То есть раз уж мы хотим, чтобы наше решение хорошо работало не на тех данных, на которых мы его обучали, а на новых данных, давайте так и будем проверять. У такого подхода есть свои недостатки. Во-первых, уменьшается размер обучающей выборки, а, значит, ухудшается и качество строящейся модели. Во-вторых, такой подход все равно склонен к переобучению, хотя и более слабому: чрезмерно близкая подгонка косвенно происходит по отношению к контрольной выборке (достаточно вспомнить, как школьников натаскивают на ЕГЭ без особой пользы для обучения). Чтобы ослабить и этот эффект, обучающую выборку делят на много частей (скажем, на 10) и попеременно качество решения тестируют на разных из них, что, однако, увеличивает время вычислений и усугубляет первый недостаток. И, в-третьих, данный подход не слишком легко применить при обучении без учителя.

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

Некоторый намек на разгадку природы переобучения дает теория вероятностей. По правилу Байеса наилучшей моделью M данных D будет модель с максимальной апостериорной вероятностью P(M|D), которая пропорциональна произведению правдоподобия данных для этой модели P(D|M), умноженному на априорную вероятность модели P(M):

P(M|D) ~ P(D|M)P(M).

Здесь за точность, с которой модель описывает данные, отвечает правдоподобие, которое при предположении о нормальном распределении ошибок (отклонений модели от данных) явным образом выражается через среднеквадратичное отклонение. Если максимизировать только его (то есть пользоваться методом максимального правдоподобия), то как раз и возникает эффект переобучения. Значит, возможность в соответствии с правилом Байеса выбрать менее точную, но не склонную к переобучению, модель может быть обеспечена только априорными вероятностями P(M).

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

Интересное, однако, наблюдение можно сделать, если прологарифмировать правило Байеса и вместо максимизации самой апостериорной вероятности минимизировать минус логарифм от нее:

–log2P(M|D) ~ –log2P(D|M) – log2P(M).

Минус логарифм от вероятности – это просто количество информации, причем –log2P(M) – количество информации в модели (длина ее описания в битах), а –log2P(D|M) – дополнительное количество информации в данных, при уже имеющейся модели (по сути, длина описания отклонений данных от модели, характеризующая ее точность). Если отвлечься от способа вычисления количества информации через вероятности, то можно увидеть следующее. Количество информации в модели – это ее сложность. Скажем, чем больше членов у нашего многочлена или нейронов и связей между ними в ИНС, тем больше битов уйдет на кодирование таких моделей.

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

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

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

Однако общая проблема машинного обучения при этом все же не решается. Невозможность правильного обобщения может быть связана с тем, что нужной модели просто нет в используемом пространстве моделей.
Вернемся к примеру с полиномиальной аппроксимацией. Если истинной моделью у нас является многочлен, то все будет хорошо – критерий длины описания позволит выбрать многочлен с оптимальным числом параметров, обеспечивающий наилучшее (при имеющихся данных) предсказание. Но что произойдет, если данные порождены с помощью какой-то другой функции? Спасет ли нас то, что эта функция в принципе может быть приближена некоторым многочленом?

Возьмем, к примеру, экспоненту. Она описывается рядом слагаемых вида xn/n!. Но в этом ряде бесконечное число членов. А выборка точек у нас будет конечной, поэтому восстановленный многочлен будет также обладать конечной степенью. Значит, при экстраполяции ошибка будет накапливаться все равно очень быстро, и никакой критерий нам уже не поможет. В равной степени если данные содержат гармоническую зависимость, то она не будет хорошо экстраполироваться ни многочленами, ни экспонентами, конечные ряды которых не могут быть периодическими. Конечно, одни типы зависимостей могут лучше или хуже экстраполироваться другими типами, но можно сказать, что если у нас в пространстве моделей нет именно того типа зависимостей, который содержится в данных, то наилучшего предсказания мы не получим.

Это же можно сказать не только о предсказании, но и, скажем, о распознавании. В случае распознавания эта проблема наиболее ярко проявляется в проблеме инвариантов. Если какие-то образы из некоторого класса удовлетворяют некоторому инварианту, то работа системы распознавания не будет достаточно хорошей, если она не может выучить именно этот инвариант. В частности, именно поэтому нейронные сети для распознавания изображений либо требуют, чтобы им сразу подавали признаки, инвариантные к геометрическим преобразованиям изображений, либо требуют выборок огромных размеров. Так, если перцептрону при обучении предъявлять распознаваемые объекты в одной части изображения, он не сможет их распознать, если их потом предъявить в другой части изображения.

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

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

Естественным является желание попытаться объединить разные методы, в которых учитываются разные возможные закономерности в данных. И такой подход действительно сейчас весьма популярен. Однако простое объединение неуниверсальных методов лишь немного увеличивает их возможности, поскольку вручную разработчики могут заложить лишь сравнительно небольшое количество разных семейств закономерностей.
Но можно ли заложить в систему машинного обучения способность выявлять любые возможные регулярности? Существует ли такое пространство, в котором бы конструктивно описывались произвольные закономерности, специально не предусмотренные заранее разработчиком? Такое пространство не только есть; оно еще и общеизвестно. Это пространство алгоритмов.

Требуется воспроизвести экспоненциальную зависимость? Такой алгоритм построить несложно. Нужны многочлены, гармонические функции, последовательность Фибоначчи, факториал? Есть и такие алгоритмы. Нужно распознавать классы четных и нечетных чисел? С помощью соответствующего алгоритма – легко! А теперь подумайте, насколько просто было бы решать все эти задачи одновременно с помощью ИНС. Естественно, чтобы сравнение было корректным, нужен метод, который сам строил бы все эти алгоритмы при предъявлении соответствующей обучающей выборки. Но здесь для нас главное, что в пространстве алгоритмов, по крайней мере, имеются подходящие решения всех таких задач.

Итак, чтобы система машинного обучения была универсальной, необходимо, чтобы она могла вывести любую закономерность. Современные методы машинного обучения этому требованию не удовлетворяют, поэтому сомнительно, что на их основе можно построить универсальный ИИ. Для такого ИИ в качестве «пространства всех возможных закономерностей» естественно использовать множество алгоритмов. Конечно, можно поспорить, действительно ли множество алгоритмов содержит все возможные закономерности (мы, однако, уже писали о том, что алгоритмического подхода достаточно для воплощения ИИ habrahabr.ru/post/145929 ). В любом случае, современные методы машинного обучения работают в сильно ограниченных подпространствах алгоритмов. И если удастся «хотя бы» использовать алгоритмы произвольного вида в качестве моделей, то возможности машинного обучения невообразимо расширятся.

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

Универсальный метод, работающий в пространстве алгоритмов и использующий критерий алгоритмической сложности для общего решения проблемы индукции (машинного обучения) был предложен Р. Соломоновым еще в 1964-м году. Правда, метод этот требует практически бесконечных вычислительных ресурсов, что вполне понятно с учетом сложности перебора алгоритмов. Неудивительно, что прагматически мыслящими исследователями он был полностью проигнорирован. Однако это не значит, что нужно искать там, где светло, а не там, где потеряли. Для создания сильного ИИ необходимо максимально приблизиться к эффективной реализации подобного универсального метода обучения, в противном случае (то есть если использовать лишь современные практические методы машинного обучения) ИИ не сможет учиться действительно чему угодно. Из понимания, в частности, этого факта и проистекает такая область исследований, как универсальный ИИ. Как приблизиться к решению проблемы – тема для отдельного непростого разговора.
@aideus
карма
63,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (67)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

        А какое более верное второе?
        • 0
          Первое привело к разным результатам, местами не столь плохим. Хотя пропагандой данного подхода мы не занимаемся и считаем его частным, просто хотелось отметить, что такое в принципе имеется.
          Насчет второго это долгий разговор. Но если кратко — попробуйте создать ИИ на основе этих принципов и поймете, что их отнюдь не достаточно. Подробнее об этом есть в книжке «Искусственный интеллект и универсальное мышление», но она пока в печати.

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