Комментарии 45
В 1980-х годах аргументы Полани, Дрейфуса и Пенроуза начали терять силу — благодаря открытию нейронных сетей, которые могли учиться самостоятельно, без явных внешних инструкций.Особенно после успеха AlphaGo многие считают, что ИНС могут обучаться с чистого листа (tabula rasa). Однако анализ показывает, что это не соответствует действительности, см. эту публикацию, для примера.
P.S. Компьютер не в состоянии решить ни одну алгоритмически неразрешимую задачу.
P.P.S. За строгими постановками — в теорию алгоритмов.
Да, человек может ошибаться. Но ход решения и полученный ответ всегда могут быть проверены другими людьми.
1) первый локальный минимум на числе X0
2) каждый следующий на числе N*Xn-1
4) после числа M функция только растет, например линейно.
Минимум функции вычислим? Конечно, на интервале [0,M].
Возможно ли узнать, когда нужно остановится? Нет, невозможно, если вы не знаете числа М.
Не может человек проверить правильность решения другим человеком задачи останова, никак.
P. S. В частных случаях — точно может. Ну и робот в принципе тоже в частных случаях её решает. Но в общем случае? Как вы можете проверить, что человек решает эту задачу в общем случае, а не в частных?
Может, вы знаете какой-то частный случай, с которым человек справляется сильно лучше, чем любой возможный алгоритм?
P. P. S. Есть статья хорошая по проблеме останова, процитирую немножко:
aideus.ru/?p=199
«Рассмотрим идею доказательства неразрешимости проблемы останова от противного. Пусть она разрешима, т. е. существует алгоритм T, которому на вход можно подать некоторую программу, и он напечатает «0», если программа «зацикливается», и «1» — если останавливается. Рассмотрим такую программу P, которая просто вызывает алгоритм T, передавая на вход свое описание T(P), и, если алгоритм T вернул «0», алгоритм P останавливается, а если алгоритм T вернул «1», алгоритм P преднамеренно «зацикливается», запуская бесконечный цикл. Для любого алгоритма T несложно составить программу P, которая, очевидно, существует. Но что будет, если эту программу запустить? Зациклится ли она или остановится? Если программа P останавливается, тогда алгоритм T, предположительно решающий проблему останова для любой программы, при вызове T(P) должен вернуть «1», но тогда программа P должна зациклиться. Если программа P зацикливается, тогда алгоритм T(P) должен вернуть «0», но тогда программа P должна была бы остановиться. Пришли к противоречию, то есть исходное допущение о существовании алгоритма T неверно.
…
Представьте себя в ситуации, аналогичной той, в которой оказывается программа T в нашем доказательстве. Пусть имеется автомат, который печатает «0», если вы говорите «1», и печатает «1», если вы говорите «0». И вас просят ответить на вопрос, что напечатает автомат. При этом вам разрешено сказать только «0» или «1». Естественно, автомат напечатает противоположное тому, что вы сказали, и вы об этом знаете, но ничего сделать не можете.»
А почему вы полагаете, что человек может решить эту задачу?Потому, что человек не ограничен теорией алгоритмов — как и любой другой формальной математической системой. Человек может выйти за её пределы и дать ответ, компьютер не может.
автомат напечатает противоположное тому, что вы сказали, и вы об этом знаете, но ничего сделать не можетеК проблеме останова это отношения не имеет. Автор сознательно подменяет понятия — загоняя человека в рамки формальной логики (кто бреет брадобрея?).
Да, человек может ошибиться. Но анализ алгоритма — это всегда последовательность рассуждений, которая всегда же может быть верифицирована другими людьми. Так что тезис «человек ошибается» в данном контексте несостоятелен. Но вот компьютер проверить эту цепочку рассуждений не сможет — т.к. она выходит за границы теории алгоритмов.
P.S. Что касается собственно теории алгоритмов, то в статье нет ничего, выходящего за рамки знаний, полученный мной на первом курсе института в 1984 году. А всё прочее в статье — философствования сомнительного качества.
P.P.S. Насчёт именно остановки — с реальным примером не сталкивался, но вот примеры преобразования контекстно-свободной грамматики в LL(1) форму (тоже алгоритмически неразрешимая задача) с которыми справляется человек и не справляется компьютер, мне в учебниках по компиляции языков программирования попадались.
К проблеме останова это отношения не имеет. Автор сознательно подменяет понятия — загоняя человека в рамки формальной логики (кто бреет брадобрея?).— а я вижу совсем иную ситуацию. Что автор поставил в одну и ту же позицию алгоритм и человека, и они одинаково не справились.
Но ладно, допустим, мы исключили данный конкретный вариант. Считаем, что в данной ситуации задача и алгоритмически, и человечески нерешаема, но это не была строго задача останова именно алгоритма.
Потому, что человек не ограничен теорией алгоритмов — как и любой другой формальной математической системой. Человек может выйти за её пределы и дать ответ, компьютер не может.— вы говорите «человек может решать неразрешимые для компьютера задачи». Я спрашиваю, почему вы так решили? Вы отвечаете: «Потому, что человек не ограничен теорией алгоритмов». Пока что это выглядит несколько тавтологично…
Вообще, я тут задумался. Какого рода доказательство было бы убедительным? Если человек может решать какую-то частную задачу останова, он может её и запрограммировать. Доказать, что люди решают общую задачу останова, мы вряд ли можем — в какой-то момент люди начнут всё чаще ошибаться, слать экспериментатора нафиг или не успевать за время теста.
А вот какой-то узкий класс задач могли бы выявить. Который люди решают с вероятностью около 100%, а алгоритм под этот класс не напишешь, даже если задашься целью. Задача останова в общем такой явно не является, потому что легко можно найти алгоритмы, которые человек в процессе теста не проанализирует
Если что, ИИ (в смысле AGI) — это не совсем алгоритм. Это алгоритм, работающий в бесконечном цикле, и которому на входную ленту регулярно прилетают данные с сенсоров. Не идеально подходит под Машину Тьюринга, но близко. Вообще, это автоматом означает, что если физики откроют какой-нибудь сверхтьюринговский процесс (машина времени, например), то AGI сможет включать в себя вычислительное устройство на базе этого процесса. Просто как внешнее устройство, как калькулятор или бумажка и ручка для человека. Но допустим, мы пока так не делаем.
P.S. «примеры преобразования контекстно-свободной грамматики в LL(1) форму (тоже алгоритмически неразрешимая задача) с которыми справляется человек и не справляется компьютер, мне в учебниках по компиляции языков программирования попадались.» — как именно вы узнали, что человек может решать эту задачу в общем случае? Если не поставили бесконечного числа экспериментов. И насколько эта задача неразрешимая для компьютера? Может, те частные случаи, с которыми вы работали, как раз-таки разрешимые, и именно поэтому их смогли решить люди
— а я вижу совсем иную ситуацию. Что автор поставил в одну и ту же позицию алгоритм и человека, и они одинаково не справились.Нет, автор не поставил их «в одну позицию», а заставил человека имитировать компьютер. Но то, что человек может решить задачу, определяется именно тем, что он не ограничен 0 и 1.
не идеально подходит под Машину ТьюрингаЛюбой алгоритм может быть реализован машиной Тьюринга c одной лентой и одной головкой (в том числе и многопоточный асинхронный — доказано Хоаром). И то, что данные на ленте меняются, не имеет значения: это тоже рассматривается в теории алгоритмов (например, генератор случайных чисел — это именно внешнее, по отношению к МТ, изменение значений на ленте).
Что касается сильного ИИ, то никто не понимает, с какого бока к нему подступиться. И я говорю именно о том, что сильный ИИ не может быть реализован алгоритмическими вычислительными машинами.
— вы говорите так «человек может решать неразрешимые для компьютера задачи». Я спрашиваю, почему вы так решили? Вы отвечаете: «Потому, что человек не ограничен теорией алгоритмов». Пока что это выглядит несколько тавтологично…Я говорю о том, что неразрешимые компьютером задачи не имеют решения в рамках теории алгоритмов. И неразрешимы они только потому, что компьютер не может выйти за эти рамки. Человек же этими рамками никак не ограничен и потому ему доступны способы анализа, на которые компьютер в принципе не способен. И именно это делает человека способным найти решение.
Приведу более близкий к реальному программированию пример: преобразование контектно-свободной грамматики к LL(1) форме является алгоритмически неразрешимым. Однако разработчики компиляторов с этой задачей почему-то справляются — в том числе и в тех случаях, когда эвристические программные преобразователи пасуют.
Приведу более близкий к реальному программированию пример: преобразование контектно-свободной грамматики к LL(1) форме является алгоритмически неразрешимым. Однако разработчики компиляторов с этой задачей почему-то справляются — в том числе и в тех случаях, когда эвристические программные преобразователи пасуют.— как вы узнали, что дело вовсе не в том, что у людей есть дополнительная информация, которую не заложили в эвристику (как бывает в другой неразрешимой задаче) или что эвристика плохая или что они хорошо решают задачу только в частных случаях? К сожалению, я в компиляции не специалист. Та «неразрешимая» (потому что np-полная) задача, с которой работаю я — это задача подбора алгоритма под данные. Обучение с учителем в самой широкой постановке. И там проблемы обычно именно в этом — есть какие-то переменные, которые непонятно было, как заложить в модель, либо сама модель лажовая, можно лучше. Модель лажовая — не значит, что мы плохо работаем, просто человечество пока не придумало чего-то лучше, надо годик подождать.
Я говорю о том, что неразрешимые компьютером задачи не имеют решения в рамках теории алгоритмов. И неразрешимы они только потому, что компьютер не может выйти за эти рамки. Человек же этими рамками никак не ограничен и потому ему доступны способы анализа, на которые компьютер в принципе не способен. И именно это делает человека способным найти решение.— ну это же тоже тавтология, как мне видится… Просто постулирование, что человек может выйти за границы теории, а алгоритм не может.
Я приведу пример. Есть конечный автомат, есть машина Тьюринга. Конечный автомат (в котором состояние — это набор поименованных переменных типа int, например) не может провести сортировку массива. Точнее, он может, но лишь если массив не больше некоторого заданного размера. Хотим больше массив? Надо больше ячеек памяти у конечного автомата и более сложную таблицу переходов. А в алгоритме такой нет проблемы с таблицей переходов. Надо только удлиннять ленту, если мы учитываем, что она в реальном компе всё-таки материальная и потому конечная. А если не учитываем, то даже этого не надо.
Тут лента — это «выход за границы». Вот пример задачи, где реально этот выход нужен, задача решается и без него, но хуже.
Что касается сильного ИИ, то никто не понимает, с какого бока к нему подступиться. И я говорю именно о том, что сильный ИИ не может быть реализован алгоритмическими вычислительными машинами.— ну, reinforcement learning? Просто из самого определения AGI вытекает. Да, сильным он сходу не будет, он просто будет с каждым годом чуть универсальнее.
Любой алгоритм может быть реализован машиной Тьюринга c одной лентой и одной головкой (в том числе и многопоточный асинхронный — доказано Хоаром). И то, что данные на ленте меняются, не имеет значения: это тоже рассматривается в теории алгоритмов (например, генератор случайных чисел — это именно внешнее, по отношению к МТ, изменение значений на ленте).— тут вопрос по концепции, я встречал разногласия. Некоторые считают, что система управления ракетой, например, не может считаться алгоритмом, так как нет терминального состояния.
Разработчики компиляторов справляются с этой задачей по очень простой причине — изначально задаётся кс-грамматика особого вида с ограничениями, которую можно привести к LL1 форме. Это совершенно нормально алгоритмизуемая задача. Если же взять кс-грамматику общего вида, то и LL1 разбора не получится — возникнут синтаксические неоднозначности, которые авторы компиляторов либо вытравляют из языка вообще, либо разрешают на другом уровне разбора.
Однако в общем случае и у человека, и у компьютера одна и та же неприятность.
Представьте себе программу, которая генерирует случайные ненулевые целые числа a, b, c и натуральное число n > 2, а затем проверяет, a^n + b^n = c^n или нет. Если равенство выполняется, то программа останавливается, если нет — пробуем заново.
Вот остановится она или нет? Теперь мы знаем, что нет, потому что теорема Ферма верна, но ещё 30 лет назад мы этого не знали. У человечества ушло 300 лет на решение всего лишь одной крайне просто формулируемой задачи остановки, а их бессчётное множество, и наверняка есть куда более трудные.
А разве нейросетки способны самообучаться? Разве нейросетки это не программы, использующие алгоритмы от разработчиков для выявления ЗАКОНОМЕРНОСТЕЙ в массивах Данных?
Разве человек умеет решать задачи без алгоритмов, основанных на Знаниях?
Такая эвристика используется в advanced actor critic системах, например.
Для каких задач, которые в принципе решаемы, такой концепции причинно-следственных связей недостаточно?
Вообще, как обычно ставят задачу для ИИ. Самая простая постановка: у нас есть некоторая эмпирическая функция, надо найти её экстремум. Например, у нас есть нейросеть, которая встроеная в систему управления ракетой, а ракета находится в виртуальной реальности. Чем ближе ракета пролетела к контрольным точкам, тем больше очков получает ИИ. Задача — найти такую конфигурацию нейросети, при которой суммарная награда (это та самая эмпирическая функция) максимальна. ИИ может неограниченно перезапускать симуляцию, ему это дёшево.
Постановка посложнее. ИИ не может перезапускать симуляцию многократно — каждый перезапуск для него либо дорого стоит, либо вообще невозможен, либо возможен, но контрольные точки будут расположены иначе. Он не подбирает настройки нейросети, он выбирает следующее действие ракеты: куда рули повернуть, как двигатель включить. Цель — получить максимальную суммарную награду.
Разумеется, задачу с ракетой можно решить через диффуры специализированным алгоритмом, только вся суть ИИ в том, что он не знает заранее, в каком мире окажется, он должен быть готов ко всему: что его бросят управлять ракетой, играть в Мортал Комбат, торговать на рынке акций. В общем, любая задача, где есть критерий успеха, сформулированный в виде числа, которое надо максимизировать или минимизировать.
Это основная, мейнстримная постановка задачи, в этой области проведено много работ. Есть другие постановки задач, но они от этой отличаются довольно мало.
Ну, то есть такая постановка вытекает из определения AGI — решает задачи не хуже человека. Значит, для простоты скажем, что просто решает любую не слишком сложную задачу, а сложную — напрягается и решает со скрипом.
В этом случае система «человек + комната» схлопывается до человека
Нет. В этом и есть ошибка Серла. Китайский язык в обоих случаях понимает система в целом, система это "правила + интерпретатор". Или другими словами это работающая программа. Неважно, находится ли состояние системы в положениях карточек или в реакциях нейронов. Это просто деталь реализации системы.
Чтобы человек начал понимать китайский, надо чтобы нейроны, которые хранят понятия системы, были связаны с нейронами, которые хранят знакомые человеку понятия, и при активации одних активировались другие.
Самый близкий пример из области компьютеров — виртуальная машина. Система "Windows Host + Ubuntu Guest" не схлопывается до "Windows Host". Ubuntu в виртуальной машине может понимать файловые системы, которые не понимает Windows.
Ну и заказчик принял работу.
Я затрудняюсь сделать из этого далекоидущие выводы… Просто вот, есть способ давать ответы, неотличимые от осмысленных, но не понимать сути.
Там имеются в виду правила вида "если на вход пришел иероглиф, похожий на кружочек, надо отправить на выход иероглиф, похожий на квадратик". Человек не знает, что означают кружочки и квадратики. А в вашем примере вы знаете, что означают слова, написанные на английском.
Мы как бы всё время апеллируем к внутреннему самоощущению системы, спрашиваем её — знает она язык или нет. Но на практике сами мы никогда этим методом не пользуемся. Мы даём студентам тесты на знание языка, и если тест проходится, то мы делаем вывод, что язык освоен. Но к компьютерам Сёрл более строг, чем к людям: там ему хочется ещё каких-то «доказательств», хотя в обычной жизни мы как-то без них обходимся.
У Фейнмана есть хороший рассказ о том, как он учил физике бразильских студентов. Студенты знали формулы и определения, но не понимали связи терминов с объектами реального мира. Могли решить задачу на улог Брюстера, но не понимали, что вода в море — это и есть та самая преломляющая среда.
Было ли у них ощущение, что они «знают»? Про них сложно сказать, но можно попытаться вспомнить какую-нибудь теорию, которую мы «знаем», но не можем сказать, как она выглядит в терминах прогноза будущего. По моим ощущением, чувство «я знаю» возникает, если его сознательно не глушить напоминанием «твоя теория нефальсифицируема»
Мой мозг говорит мне: ты знаешь это слово!
Не совсем так. Мозг говорит "вот это слово означает вот этот образ", это и означает понимание. Понимание того, что означают наборы букв на входе. Например, "слово red означает вот такой цвет". А в китайской комнате у человека нет связи иероглифов с ивестными ему образами. Иероглиф может обозначать красный цвет, а может что-то еще, человеку это неизвестно. Ошибка Серла в том, что он предполагает, что для возникновения понимания оно должно быть известно человеку. А это не так, оно должно быть известно системе в целом.
Кроме того, опять же, мы тут осуществляем некий чит: мы как бы вскрываем «китайскую комнату» и говорим: ага! да здесь никакого понимания нет — тут тупо коллекция бумажек с правилами! Но ведь мы можем спросить саму комнату, понимает ли она китайский, верно?
А к человеку мы подходим наоборот: мы спрашиваем его, понимает ли он. А могли бы вскрыть череп и убедиться, что там только нейроны и электрохимия всякая, и где же здесь «понимание»?
Но вы знаете, что бук это дерево, и что он связан с ботаникой. То есть какие-то образы у вас все равно возникают. А в китайской комнате человек не знает связи между словами. В общем, это не то же самое, что запомнить формальные правила английского. Разница именно в том, что вы понимаете текст на английском.
Если рассмотреть вариант, что вы переводите дословно с одного неизвестного вам языка на другой, пользуясь таблицей соответствия слов и парой правил грамматики, то да, это будет как в эксперименте с китайской комнатой. И лично у вас понимания тут тоже нет.
Но вы знаете, что бук это дерево, и что он связан с ботаникой
Вопрос в не в том, знаю я это или нет. Вопрос в том, откуда вы это знаете. А знаете вы это оттуда, что спросили меня, и я вам сказал, что знаю. Ну так спросите китайскую комнату, что она вам ответит?
Смысл эксперимента с китайской комнатой как раз не в том, что она ответит, а в том, где по-настоящему возникает понимание. Здесь не рассматривается обман или имитация. Человек, запомнивший правила китайской комнаты, не понимает китайский; вы, запомнивший правила английского, понимаете английский. В этом и есть разница между этими ситуациями. Ваш пример не является аналогией, я говорю только об этом.
А система "правила + выполняющий их интерпретатор-человек" понимает китайский так же, как вы понимаете английский. Тут важный момент это то, где хранится состояние этого выполнения. Знания системы о мире хранятся не в тех же нейронах, в которых хранятся знания человека о мире, и активация одних не приводит к активации других. Поэтому такая ситуация возможна, когда система понимает по-настоящему, а человек нет. Независимо от того, что означает "понимать по-настоящему", просто предполагается, что оно работает одинаково в обоих случаях. Это не игра слов, это так сказать реальные взаимосвязи между сущностями.
«По мнению Рагнара Фьелланда, корень проблемы в том, что компьютеры не имеют модели реальности, не могут менять действительность вокруг себя и никак не взаимодействуют с ней.» То о чем так долго говорили большевики… и я. ) Лично я не вижу концептуальных трудностей в создании сильного ИИ. Надо всего лишь создать механизм взаимодействия с реальным миром — антропоморфное тело подошло бы лучше всего, зрение, слух, осязание, умение взвешивать предметы, и т.п… На уровне железа надо задать инстинкты — типа выживания+размножения. А дальше учить как ребенка параллельно совершенствуя математику нейронных сетей. Вначале не будут получаться даже детеныши обезьян, потом будут, потом будут получаться роботы с а-ля синдромом Дауна, ну и наконец получатся нормальные робо-люди. Дальше получим гениев и люденов.
На практике это конечно весьма объемная задача. То же зрение должно быть аналоговым, т.е. форма объекта на сетчатке должна без всякого кодирования попадать в нейронную сеть. Звук также — надо возбуждать нейрончики с частотой 20-20кГц. Хотя в плане звука может и не надо пока — я представил сейчас беззвучный мир, но с надписями вида: «капает кран», «вибрирует телефон» — глухие же люди вполне социально адаптированы.
Иначе получается, что мы учим человека с завязанными глазами читая ему книги и не выпуская из комнаты.
В общем задача для большой корпорации на много лет. Но главное — непонятно что делать с результатом. На Земле и так много людей, а тут еще роботы которые смогут делать многое лучше (по началу), а позже — всё лучше (из-за эффективного обучения и копирования знаний). В конце туннеля видим дивный, новый мир.
Надо всего лишь создать механизм взаимодействия с реальным миром
Нет, надо создать механизм обучения по результатам этого взаимодействия. В этом и есть концептуальная трудность.
нейросеть запомнит
Вот это и есть обучение. Чтобы запомнить, надо сначала распознать. Хорошего алгоритма распознавания понятий "угол" и "натолкнулся" еще не придумали.
а) Не могу идти — потому что больно ноге когда выдвигаю её вперед
б) Также больно носу, а спине нет
в) Начинаю ощупывать строя мысленно 3D карту ощущений
г) Подключаю изображение и ориентируюсь уже по двум каналам информации.
Из базовых понятий только «пространство» и «ощущение». Еще надо время подключить — видимо нужен внутренний таймер какой-то.
Нейросети могут в каком-то смысле «выделять» понятия «угол» и «натолкнулся», но крайне непросто проверить и отдебажить, что конкретно выделила нейросеть и на какие признаки навелась.
Если интересно, предлагаю свою статью про AGI, про то, какие сейчас подходы есть. Там без глубокого матана, там больше по концепциям:
habr.com/ru/post/468379
А нужен специальный алгортм?
Для всего нужен специальный алгоритм, само по себе ничего не появляется.
Подключаю изображение и ориентируюсь уже по двум каналам информации
Алгоритм распознавания, которого еще нет, у вас скрыт в слове "ориентируюсь". Подключите к роботу камеру, да и пусть он ориентируется по сырому RGB. Не получается? Наверно нужна какая-то дополнительная обработка.
… мозг постоянно строит прогнозы…
:) протоучёные склонны наделять сам мозг (то есть эфирную нейронную гиперсеть) неким «врождённым здравым смыслом» (например, утверждается, что «мозг постоянно строит прогнозы, сверяет их с поступающей от органов чувств информацией и вносит коррективы» и так далее). Некоторые даже ищут в мозге соответствующие этому структуры и связи. Однако, мозг, разумеется, лишь приобретает эти навыки («здравый смысл») в процессе обучения, обладая интеллектом (способностью сознания (суперпозиционного гиперпотока паттернов) к эволюции информации посредством ассоциативного блуждания)…
Можно конечно же сидеть и потеть над алгоритмами в надежде что какая-нибудь «ошибка» заставит сложную систему стать по настоящему разумной, но без нужного «тела» этот разум быстро изживёт себя.
Сейчас мы пытаемся вычленить отдельную составляющую нашего естества и заставить её работать так, словно уже собран целый организм или целое сознание.
Всё рано или поздно упрётся в «железо», а именно в то что оно из себя представляет. Слиток кремния вряд ли справится с задачами требующими «гибкость».
Сонм разумов: актуальные барьеры и трамплины на пути создания общего ИИ