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

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

Такое впечатление, что из текста пропущен существенный кусок объяснения.
Вот мы постулируем, что модели — это алгоритмы. Дальше описывается способ сравнить модели и выяснить, какая лучше. И всё, пошёл блок вопросов-ответов.

Откуда берутся новые модели? На каком языке они записываются?

Полез в код на гитхабе — там какой-то интерпретатор виртуальной машины и функции-генераторы. Вот этого в статье не хватает: какие базовые операции выбраны для машины, как происходит генерация новой модели.
Спасибо за конструктив. И правда, надо дописать.

Откуда берутся новые модели?

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

На каком языке они записываются?
— на любом Тьюринг-полном языке. Он выбора языка зависят доступные нам способы поиска — например, если мы запишем модель на каком-нибудь языке, где каждая элементарная операция кодируется одним символом и не имеет явных аргументов, но сможем применять генетический алгоритм для поиска модели. Если же мы сумеем записать модель в терминах чего-то вроде нейросети — некоего дифференцируемого компьютера — то можно будет проводить поиск градиентным спуском. Это один критерий выбора языка — удобство направленного перебора пространства алгоритмов.
Второй критерий — язык задаёт априорные вероятности. Язык — это то, что определяет, что есть просто, а что есть сложно. В идеале язык должен быть таким, чтобы он мог описывать наблюдаемые явления лаконично и точно. Если мы подбираем функцию y=e^x, то в идеале язык должен содержать экспоненту в качестве элементарной операции. То есть можно конструировать язык, зная особенности задачи, либо найти какой-то способ сделать автоматическую систему, которая создаст язык (набор базовых операций), максимально пригодный для описания некоей предметной области. А можно сделать язык как попало — в этом случае AIXI потребует кучу данных для обучения, а потом массовым перебором сам найдёт и оптимальный язык, и лаконичную модель, и всё это выразит через тот язык, что мы задали от балды.
Так себе идейка для ИИ. Тут отсутствует рефлексия, то есть возможность учиться учиться.

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

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

Впрочем, кое-что у меня всё же есть. Если мы перебираем строки кода от коротких к длинным, либо эволюционно, то можно запоминать те подстроки, которые чаще обычного оказывались в хороших моделях. Складывать эти подстроки в отдельную библиотеку. И тогда при каждом новом запуске этот ML будет чуть лучше решать задачи, если они похожи на прошлые. В репозитории эта функциональность реализована, хотя и не задокументирована как следует. И да, этот подход работает, хотя и не даёт каких-то серьёзных прорывов.
Пиво, арбуз, листья крапивы собранные плачущими девственницами в полнолуние второй луны, машинное масло, 2 круто сваренных яйца, крылья златовласки, корень мандрагоры, фунт гвоздей, 2 капли ацетона для запаха. Перемешать и настаивать неделю. Отжать руками. Полученная жидкость и будет живой водой. См. на гитхабе.
Если такое, что в статье, в голове у существенной части Data Scientist-ов, то я их уже боюсь.
Видимо, у нас очень разный бэкграунд, что мы не договорились. Большинство знакомых мне DS не задумываются о целостных теориях познания, или по крайней мере не говорят.
Знания теории чисел никак не поможет вам в умении программировать на Java. Любая теория познания будет населена тоннами недоказуемых утверждений и никак не поможет разобраться в существующем интеллекте человеческого типа (AGI).
Модель, которую я описал, не наилучшая возможная, а наилучшая из известных мне. Уже существующие системы reinforcement learning неплохо ложатся как её упрощения. Системы one-shot learning хорошо выражаются через концепцию подбора оптимального языка описания. Машинное обучение в целом хорошо ложится как частный случай описанной модели.
Кроме того, эта модель позволяет увидеть, какими способами точно нельзя сделать AGI — например, если использовать неполные по Тьюрингу языки описания моделей.

Насчёт кучи необоснованных утверждений — они на практике проверяются. Берём другую теорию познания/модель ИИ. Запускаем. Если стало лучше — оставляем ту концепцию, которая лучше. В любом случае, все другие «теории познания», что я видел, выглядят намного хуже или в плане обоснованности, или в плане полноты покрытия, или в плане реализуемости.

В любом случае то, что я описал, я не планирую использовать как непосредственно модель ИИ. Скорее, как некий эталон — например, если взять Model Based Reinforcement Learning и сравнить с AIXI, можно легко найти ситуации, где Model Based будет плохо справляться, независимо от вычислительных мощностей. Это как с циклом Карно в термодинамике — в реальные машины его не вставить, но можно понять, где эти реальные машины неоптимальны и, может быть, что-то улучшить. И человека тоже можно сравнивать с этим эталоном и находить слабые места — например, человек обычно не может держать в голове сразу пару десятков гипотез одного и того же явления, и действовать с учётом их всех.
У датасайентиста в голове примерно следующее: искусственный интеллект решающий алгоритм — это алгоритм оптимизации аппроксимационной функции на обучающих примерах.
Конечно, в определении не звучит ничего такого из эмпириокритицизма, бихевиоризма, идеализма, материализма… И вообще философ скажет, что тут какое-то пространное объяснение, при этом какое-то слишком элементарное. Но это именно определение всего разнообразия алгоритмов машинного обучения и анализа данных. И истинные датасайентисты знают это определение.)
Самое важное из этого следует, что любое умное решение ИИ — это сплав некоторой аппроксимационной функции и обучающих данных, а оптимизация этой функции — есть познание. Если функция подобрана удачно и критерий оптимизации работает хорошо, то значит алгоритм обучается, иначе нет. Там еще про переобучение (overfitting) и обобщающую способность (generalization) тема, про которые философы не в курсе в принципе, так как абсолютно некомпетентны в данной области.
Я общался со сторонниками разных философий и мне видится, что «то, что в голове у датасайнтиста», отвечает на многие их вопросы — намного конкретнее и обоснованнее. Либо отметает вопросы как бессмысленные — тоже обоснованно.
Ну например, есть куча споров между идеалистами и материалистами на тему того, «является ли разум онтологически базовой сущностью». Подход датасайнтиста говорит: да это неважно, главное loss, а вообще ответ на этот вопрос зависит от вашего датасета.
Или «существует ли мир вне нас, и если нет, то что мы познаём», вопрос солипсизма. Независимо от ответа, мы можем работать с этим, возможно, воображаемым миром и достигать в нём конкретных целей.

Собственно, основной посыл именно такой: у нас есть штука для ответа на ваши вопросы. Не на все, но на многие, и это обоснованные ответы.

Я в целом с вами согласен — по части ML добавляю лишь, что обычно модель делает прогноз в виде точечной оценки, а во многих случаях нужно что-то другое, что выводится из распределения вероятностей. Это вроде как не мейнстримная идея для датасайнтиста.
Потом, если речь идёт об ИИ в смысле машины достижения целей в реальном мире, то нужно ещё упомянуть, что нужна какая-то стратегия принятия решений. Мало знать о том, как мир устроен, надо уметь делать профит. И в таких условиях оказывается, что есть ещё дополнительные требования к моделям ML.

И вот это всё, что применимо к ИИ/ML, оно в значительной мере применимо и к человеку — очень многие когнитивные искажения хорошо выражаются именно в терминах отклонения от алгоритма AIXI. Условно, если мы в какой-то ситуации знаем, как повёл бы себя AIXI, а человек поступает иначе — сильный повод задуматься, а не глупость ли делаем (или повод для критики AIXI как концепции)
Человек не силен интеллектом, это надо признать и понимать. Вот пока не преподадут в универе основы МО, никакого профита не получается. Оценки возможностей человеческого мозга основаны на собирательном образе человека, в качестве такого человека выступают Архимед, Галилей, Бруно, Гаусс, Эйнштейн одновременно, а это так себе идея… Ибо такого человека не существует. Познание через образование (с учителем) работает, а без него — пиши пропало.
Я согласен, те достижения интеллекта, что мы видим — это достижения целой цивилизации. То есть когда человек осваивает что-то новое, он частично сам выводит закономерности, частично усваивает найденные другими людьми. Если этот процесс «размотать» до первоисточников, то будет понятно что, условно, первого «интеллектуального агента» никто не учил, он сам, методом проб и ошибок. И всё наше знание строится именно на опыте — пусть и не на личном, а на опыте целой цивилизации.
Кроме того, когда человека учит другой человек, информация воспринимается через стандартные сенсоры, то есть в каком-то смысле обучение с учителем для человека тоже будет обучением на личном опыте (на личном опыте общения с учителем). Я понимаю, что человек как-то по-особенному обрабатывает информацию, пришедшую через общение. Но я пока не знаю, как описать единой схемой тот факт, что люди могут и учиться на опыте, и воспринимать по описанию чужой опыт почти как свой собственный, и воспринимать чужие описания опыта как ложные, и воспринимать вообще довольно оторванные от опыта концепции. Пока что лучшая идея, что я видел — «не знать», что существует общение, и изобрести его по ходу дела с нуля
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории