Создание ИИ методом «глокой куздры». Интеллектуальная одиссея

    Захотелось мне написать разговаривающую программу. Очень захотелось, позарез.

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

    Знакомьтесь, Ваня Разумный.


    Ниже находится описание проблем, возникших передо мной на этом хоженом-перехоженом пути, и способов их преодоления.

    По поводу результата оговорюсь сразу: целью был не программный код, а формулировка принципов искусственного мышления, функционирующего НЕ на основе физической реальности, как биологические организмы, а на основе СИНТАКСИСА. Поклонники теста Тьюринга, нейронных сетей и машинного обучения могут не беспокоиться.

    Внимание, материал объемный.

    Ушат холодной воды


    Чтобы не было беспочвенных ожиданий с последующими ехидными скриншотами в комментариях, сразу продемонстрирую Ваню Разумного в непрезентабельном виде. Вот, закачал начало «Емели» и попробовал поспрашивать – в точности как на уроках литературы в начальных классах.

    Оригинальный текст:

    Жил-был старик. У него было три сына: двое умных, третий – дурачок Емеля. Те братья работают, а Емеля целый день лежит на печке, знать ничего не хочет.
    Один раз братья уехали на базар, а бабы, невестки, давай посылать его:
    — Сходи, Емеля, за водой.
    А он им с печки:
    — Неохота…
    — Сходи, Емеля, а то братья с базара воротятся, гостинцев тебе не привезут.
    — Ну, ладно.
    Слез Емеля с печки, обулся, оделся, взял ведра да топор и пошел на речку. Прорубил лед, зачерпнул ведра и поставил их, а сам глядит в прорубь. И увидел Емеля в проруби щуку.


    Диалог:


    Однако, текст можно адаптировать – так, допустим:

    Старик имел трех сыновей. Первый сын был умным. Второй сын был умным. Третий сын был дураком. Емеля – третий сын старика. Емеля хороший.
    Старшие сыновья работают целый день, а Емеля лежит на печи.
    Однажды братья уехали на базар. Невестки говорят Емеле:
    — Сходи за водой.
    Емеля отвечает с печки:
    — Не пойду за водой.
    Невестки говорят:
    — Братья гостинцев тебе не привезут.
    — Ну, ладно.
    Емеля слез с печки, обулся, оделся, взял ведра и топор. Потом Емеля пошел на речку.
    Емеля прорубил лед и зачерпнул ведра. И увидел Емеля в проруби щуку. Щука – это рыба. Емеля поймал щуку.


    После адаптации выходит поприличней:


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

    Перехожу непосредственно к описанию интеллектуальной одиссеи.

    Теоретическое обоснование


    Рассуждал я следующим образом.

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

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

    Чат-боту (под которым договоримся понимать ИИ, занимающийся исключительно разговорами) нельзя указать на предмет и сказать: «Это дерево», – за счет отсутствия у чат-бота глаз, то есть видеокамеры. Объяснять возможно лишь на словах, а как объяснишь, если человеческой речи он и не разумеет?!

    По счастью, отношения между элементами речи определены, и довольно жестко: за них отвечает синтаксис. Следовательно, любой текст, построенный по законам синтаксиса, содержит в себе некоторый, закрепленный в синтаксисе смысл. Та самая вынесенная в заголовок «глокая куздра», знаменитая и непревзойденная по наглядности – которая, как оказалось, давно пристегнута к компьютерным исследованиям.

    Из воспоминаний одного товарища о далеких 70-х:

    Глокая куздра
    В июле 2012 г. ко мне в Концепт пришел эксперт и сказал «Глокая куздра». Я его понял. Это был знак причастности к общему когда-то семантическому полю.…
    «Глокая куздра штеко будланула бокра и кудлачит бокренка».
    В 70е годы искусственным интеллектом занимались в ВЦ АН СССР, в ИПУ АН СССР и нескольких др. институтах. В том числе было направление, которое занималось машинным переводом. Проблема не решалась годами, семантическая неоднозначность не давала перевести смысл без контекста. Было не понятно, как формализовать контекст в компьютерной программе. И вот Д. А. Поспелов /наверно/ распространил пример, иллюстрирующий трудность этого перевода. Он взял фразу, которая состоит из бессмысленных слов, но вместе с тем по строю предложения и звучанию слов создает совершенно ясные одинаковые ассоциации у совершенно разных людей. Этот эффект понимания не мог быть достигнут машиной. Действительно, Глокая куздра – этакая злая коза – она, ясное дело, сильно боднула козла и что-то несусветное творит с козленком… Семинары по машинному переводу проходили и в ИПУ, и я встречал на доске такое вот оглавление: «Глокая куздра. Семинар пройдет в 14.00 в 425 ауд.».

    Справка. Автор этой фразы – известный языковед, академик Лев Владимирович Щерба. Корни входящих в нее слов созданы искусственно, суффиксы и окончания позволяют определить, к каким частям речи относятся эти слова и вывести значение фразы. В книге Л. В. Успенского «Слово о словах» приведен ее общий смысл: «Нечто женского рода в один прием совершило что-то над каким-то существом мужского рода, а потом начало что-то такое вытворять длительное, постепенное с его детенышем».
    Источник kuchkarov.livejournal.com/13035.html

    На основе «глокой куздры» можно построить полноценный диалог.

    — Кто будланул бокра?
    — Куздра.
    — Кто кудлачит бокренка?
    — Тоже куздра.
    — Какая она?
    — Глокая.
    — Как будланули бокара?
    — Штеко.


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

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

    Читал, что какое-то первобытное племя не видит самолетов в небе – просто не видит, и все. Еще читал, что индейцы не замечали подошедших к берегам кораблей Колумба, потому что… просто не замечали. А заметили после того, как им объяснили, как надо смотреть – то есть каким образом увязывать цветные пиксели в конкретные предметы. Я этим псевдогеографическим байкам верю: такие зрительные парадоксы представляются мне правдоподобными.

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

    Библиотеки


    Поставив задачу, принялся гуглить по поводу подходящих библиотек для C#.

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

    а) определять морфологические признаки словоформы,
    б) возвращать словоформу с требуемыми морфологическими признаками?

    Лексикон ограничен, количество признаков тоже. И вещь такая полезная, обиходная… Не тут-то было!

    Ничего не найдя, сгоряча попробовал закодить определитель морфологических признаков самостоятельно. Как-то сразу не задалось. На этом моя интеллектуальная одиссея и завершилась бы бесславно, в порту отправления, если бы повторное, более тщательное, гугление не выявило пару бесплатных библиотек, которыми я в конечном счете и воспользовался. Как всегда, спасибо энтузиастам.

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

    Пример синтаксического разбора парсера Solarix
    <?xml version='1.0' encoding='utf-8' ?>
    <parsing>
    <sentence paragraph_id='-1'>
    <text>мама мыла грязную раму.</text>
    <tokens>
    <token>
    <word>мама</word>
    <position>0</position>
    <lemma>мама</lemma>
    <part_of_speech>СУЩЕСТВИТЕЛЬНОЕ</part_of_speech>
    <tags>ПАДЕЖ:ИМ|ЧИСЛО:ЕД|РОД:ЖЕН|ОДУШ:ОДУШ|ПЕРЕЧИСЛИМОСТЬ:ДА|ПАДЕЖВАЛ:РОД</tags>
    </token>
    <token>
    <word>мыла</word>
    <position>1</position>
    <lemma>мыть</lemma>
    <part_of_speech>ГЛАГОЛ</part_of_speech>
    <tags>НАКЛОНЕНИЕ:ИЗЪЯВ|ВРЕМЯ:ПРОШЕДШЕЕ|ЧИСЛО:ЕД|РОД:ЖЕН|МОДАЛЬНЫЙ:0|ПЕРЕХОДНОСТЬ:ПЕРЕХОДНЫЙ|ПАДЕЖ:ВИН|ПАДЕЖ:ТВОР|ПАДЕЖ:ДАТ|ВИД:НЕСОВЕРШ|ВОЗВРАТНОСТЬ:0</tags>
    </token>
    <token>
    <word>грязную</word>
    <position>2</position>
    <lemma>грязный</lemma>
    <part_of_speech>ПРИЛАГАТЕЛЬНОЕ</part_of_speech>
    <tags>СТЕПЕНЬ:АТРИБ|КРАТКИЙ:0|ПАДЕЖ:ВИН|ЧИСЛО:ЕД|РОД:ЖЕН</tags>
    </token>
    <token>
    <word>раму</word>
    <position>3</position>
    <lemma>рама</lemma>
    <part_of_speech>СУЩЕСТВИТЕЛЬНОЕ</part_of_speech>
    <tags>ПАДЕЖ:ВИН|ЧИСЛО:ЕД|РОД:ЖЕН|ОДУШ:НЕОДУШ|ПЕРЕЧИСЛИМОСТЬ:ДА|ПАДЕЖВАЛ:РОД</tags>
    </token>
    <token>
    <word>.</word>
    <position>4</position>
    <lemma>.</lemma>
    <part_of_speech>ПУНКТУАТОР</part_of_speech>
    <tags></tags>
    </token>
    </tokens>
    </sentence>
    </parsing>


    Вторая библиотека – LingvoNET, предназначенная для склонения и спряжения слов русского языка. Предыдущей склонения и спряжения тоже доступны, но эта приглянулась мне легкостью освоения.

    Получив вожделенное, засучил рукава.

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

    В начале было слово


    В соответствии с реализованной мной концепцией, в качестве первичного элемента имеем слова с известными нам морфологическими признаками.

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

    Я насчитал четыре вида подобных словосочетаний:

    1. Фразеологические обороты,
    К сожалению, парсер их не возвращает.
    Слесарь бил баклуши.
    Для парсера «бить баклуши» – для разных слова, хотя семантическая основа тут одна, и воспринимать словосочетание необходимо так, как его воспринимает наш мозг: слитно.

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

    3. Поговорки, пословицы, афоризмы.
    Они, как правило, также представляют собой единое смысловое поле.
    Старый конь борозды не портит.

    4. Составные служебные слова (вследствие чего, из-за того что, по причине и т.п.)
    Парсер возвращает некоторые из них слитно, другие – нет.

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

    Составные слова – независимо от их типа – необходимо обрабатывать так, как если бы они были единой слитной конструкцией… Но как узнать, какие словосочетания относятся к данной группе?

    Наиболее очевидное – посредством прямого на то указания:


    Более сложный, применимый лишь к именам, вариант – определение фразеологизмов по заглавным буквам:

    • некоторые имена собственные, в частности ФИО, имеют все заглавные буквы
    • другие собственные имена лишь начинаются с заглавной буквы (например, Аральское море).

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

    Субъект – Действие – Объект


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

    Вот фраза:
    Плотник выстругал доску.
    Что можно о ней сказать, ориентируясь исключительно на синтаксис?

    Можно сказать, что:

    1. Субъект (существительное именительного падежа) – то, что выполняет действие.
    2. Объект (существительное не именительного падежа) – то, на что направлено действие.
    3. Само действие – глагол.

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

    Было:
    Плотник выстругал доску.
    Стало:
    Доска выстругана плотником.

    Иначе говоря, залог делает фразу инвариантной.


    В некоторых случаях инвариантность фразы практически неопределима, к сожалению.

    Имеем высказывание:
    Спички лежат в коробке.
    Его можно переформулировать:
    Коробок содержит спички.
    Содержание обеих фраз идентично, однако выражаемые глаголами действия формально разнонаправленны (в первом случае спички воздействуют на коробок, во втором случае – наоборот), при этом залоги обоих глаголов активные.

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

    Совместное употребление триады не обязательно: любой из названных элементов может во фразе отсутствовать.
    Бегемот двинулся.
    Вечер.
    Светало.

    И наоборот, элементы могут присутствовать в предложении во множественном числе, например:
    Вася и Петя подрались.

    Что касается множественности, то после долгих размышлений и переделок мной были установлены следующие правила обработки:

    1. Субъект в предложении присутствует всегда. При отсутствии субъекта в исходный текст вставляется заглушка, обозначающая существительное.
    Светало.
    Преобразуем в:
    [Noun] светало. Иначе говоря: Что-то светало.

    2. Действие может отсутствовать при отсутствии объекта. При наличии объекта вставляется заглушка, обозначающая глагол.
    Шаг в бездну.
    Преобразуем в:
    Шаг [verb] в бездну. Можно трактовать как: Шаг [направлен] в бездну.

    3. Объект в предложении может отсутствовать. Никакой заглушки при этом не применяется.
    Он поехал.
    Увеличивать фразу до «Он поехал [noun]» нет смысла, ведь едут не обязательно куда-то: термин может обозначать начало движения.

    4. Субъект и объект могут быть множественными. Фраза при этом не разделяется.
    Множественные субъекты:
    Мальчик и девочка смотрели телевизор.
    Множественные объекты:
    Охотник добыл лося и кабана.

    5. Действие допускается только единичным: при множественности действий фраза разделяется по числу глаголов.
    Дворник улыбнулся и погрозил пальцем.
    Преобразуем в:
    Дворник улыбнулся. Дворник погрозил пальцем.
    В этом случае фраза требует разделения.

    Свойства элементов


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

    Некоторые из названных свойств единичны (например, род: не бывает слов одновременно мужского и женского родов), другие множественны. К множественным свойствам относятся, к примеру, число и дата. Можно сказать «5 лошадок», а можно: «Не меньше 3 и не больше 7 лошадок»: во втором случае оба числительных относятся к одному слову, тем самым являются его множественными свойствами.

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

    • прилагательное – свойство существительного,
    • наречие – свойство глагола (как правило),
    • предлог – свойство существительного,
    • союз – маркер множественности элементов (как правило),
    • местоимение – ссылка на предыдущее существительное,
    • числительное – указатель на число субъектов или объектов.

    Разделение предложений на секторы


    Выше был упомянут случай, требующий разделения предложения на части (пример с дворником). Этот случай не единственный – встречаются другие.

    Самое очевидное: сложносочиненные и сложноподчиненные предложения.

    Юноша улыбнулся, и девушка улыбнулась в ответ.
    Купальщик плюхнулся в воду, которая была холодна.

    Разделяем на:
    Юноша улыбнулся. Девушка улыбнулась в ответ.
    Купальщик плюхнулся в воду. Вода была холодна.


    Чуть менее очевидны причастия и деепричастия. Тем не мене они выражают действия, что приводит к необходимости разделения.

    Автомобиль, развернувшись на месте, врезался в отбойник.
    Развернувшийся на месте автомобиль врезался в отбойник.

    Разделяем:
    Автомобиль развернулся на месте. Автомобиль врезался в отбойник.

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

    Конечная конструкция у всех трех исходных вариантов примера идентична.

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

    Такой пример:
    Хорошо гулять по осеннему лесу.
    Что тут разделять, когда все слитно и компактно? Немного озадачивает отсутствие субъекта, поскольку, как мы договорились, субъект должен выражаться существительным, а здесь он… наречие что ли? Ан нет, разделение необходимо!
    [Noun] гулять по осеннему лесу. Хорошо. В смысле: Кто-то гуляет по осеннему лесу. Это хорошо.

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

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

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



    Здесь второй сектор является определением первого. И никаких тебе объектов в именительном падеже!

    Главное, конечно, то, что свойствами могут обладать не только отдельные элементы, но и секторы.

    Помимо цели, я использовал такие свойства секторов, как:

    • тип сообщения (утверждение, распоряжение, вопрос),
    • тип вопроса,
    • залог (имело ли место преобразование страдательного залога в действительный),
    • обращение (к собеседнику по имени: да или нет),
    • склейка,
    • валидность,
    • время,
    • вероятность.

    Склейка


    Как принято именовать данную сущность у лингвистов, понятия не имею. Может быть, соединительное слово?

    Итак, склейки служат для связи между секторами. Попросту говоря, это служебные слова типа «поэтому», «когда», «вследствие чего», «ввиду того что» и т.п.

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

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

    Названная проблема не решаема для чат-бота в принципе: физическая реальность – одно, вербальная сфера – другое. Элементная база разная (под элементной базой я понимаю способ восприятия реальности: для чат-бота это письменная речь).

    Валидность


    Некоторые фразы оказываются некорректными. Ясно, что если выдать ИИ откровенную белиберду, он не поймет.


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


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

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

    Очевидно, что инвалидные фразы необходимо беспощадно отбраковывать при обработке.

    Основные признаки инвалидных фраз, в моей интерпретации:

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

    Вставка недостающих слов. Замена ссылок


    Предложение формализовано, пора записывать? Рано. Требуется вставить недостающие слова и заменить ссылки.

    Возьмем для примера диалог:
    — Петров, как здоровье?
    — Нормальное.
    — А у жены?
    — Тоже.


    Формализация требует восполнения недостающего, приблизительно так:
    — Как здоровье Петрова?
    — Здоровье Петрова нормальное.
    — А как здоровье у жены Петрова?
    — Здоровье у жены Петрова тоже нормальное.

    После этого – не раньше – можно приступать к обработке текста с последующей записью в базу.

    Вот и она – база, со всеми свойствами, также вспомогательными и справочными таблицами.


    Иерархическая структура:

    1. Беседа (сеанс связи с собеседником).
    2. Сообщение (текст, который выдает собеседник зараз).
    3. Предложение (информационная единица сообщения).
    4. Сектор (часть предложения).
    5. Слово.

    Не Бог весть что, особенно для читателей здешнего ресурса… Но я ж дилетант, мучился долго.

    Общение


    После записи реплики собеседника в базу можно приступать непосредственно к общению. Проблема – каким образом общаться? Сказать что-то утвердительное? Задать встречный вопрос? Попросить чего-нибудь?

    Методом проб и ошибок вырисовалась схема.


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


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


    Что сказала-то? Любой человек, услышав подобное, первым делом уточнит, что имеется в виду.

    Достоверность – соответствие тому, что записано в памяти. Если кто-то слышит «Гагарин не летал в космос», а в его памяти записано обратное, он опять-таки попросит (должен попросить) разъяснений.


    Естественная реакция.

    При необходимости отвечать стандартно Ваня Разумный осуществляет выбор из типового набора ответов случайным образом.

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

    и т.п.

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

    Да на уровне синтаксиса нельзя даже отличить отрицательный ответ от положительного!
    Возьмем два привычных для нас альтернативных ответа на один и тот же вопрос:
    Еще как!
    Вот еще!

    Первый из ответов означает «Да», а второй – «Нет». Определить значения по синтаксису нет никакой возможности.

    Типы предложений


    Основную роль в диалоге играют типы предложений:

    1. Распоряжение.
    2. Утверждение.
    3. Вопрос.

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


    Ничего стоящего внимания.

    При утвердительном высказывании собеседника реакция в общем случае сводится к поиску встречного утверждения по теме, где тема – субъект или объект, по желанию.
    Космонавт полетел на Марс.

    В ответ, найдя в базе утвердительное предложение со словом «космонавт», можно выдать:
    Космонавты храбрые.

    А можно поискать по объекту, возвратив что-нибудь вроде:
    Марс – это красная планета.

    Но нет гарантий, что в базе не отыщется неподходящая фраза, типа:
    Планетолет вез на Марс мусорные контейнеры.

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

    Вместо ответного утверждения может генерироваться вопрос: в случае если в затронутой теме Ваня чего-нибудь недопонял.

    Вопросы


    Вопросы подразделяются на два подтипа, которые для себя я обозначил как общие и специальные.

    Общие вопросы – без вопросительного слова, допускающие ответы «Да» или «Нет».


    Специальные вопросы требуют в каждом случае индивидуального ответа, тут простым «Да» или «Нет» не отделаешься.
    Сколько на Земле людей?
    Почему слоны большие?
    Кто такой Наполеон?


    Пришлось систематизировать вопросительные слова. Каждому вопросительному слову – которых, по счастью, все же немного, – ставился в соответствие тип. Получился список вида:
    Вещь: что?
    Имя: кто?
    Место: куда? где?
    Прилагательное: какой?
    Наречие: как?
    Число: сколько?
    Дата: когда?
    Причина: почему?
    И так далее.

    При отсутствии вопросительного слова вопрос общий.

    При общем вопросе Ваня Разумный ищет ответы не только непосредственно на него, но в случае отрицательного ответа и на все специальные вопросы, сгенерированные по основному общему. Цель – выдать в качестве ответа альтернативный сектор.


    Ответы


    Поиск ответа осуществляется, вестимо, по шаблонам:

    1. Берем слово, со всеми морфологическими признаками, и ищем секторы, в которых указанная словоформа присутствует. Так по всем словам вопросительной фразы.
    2. Затем находим пересечение результатов, полученных по каждому слову. Сектор, являющийся пересечением, является ответом. Если секторов несколько, выбираем какой больше понравится.

    Установив сектор-ответ, можем выдать собеседнику «Да», или «Нет», или «А черт его знает», – но это по общему вопросу.

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

    Допустим, спросили:
    Кто выстрелил?
    Для «выстрелил» ищем «выстрелить» с заданными морфологическими признаками, а для «кто» – любое слово с заданными морфологическими признаками. Сектор, в котором присутствуют оба слова, и будет ответом.

    В некоторых случаях (на самом деле, во многих) единичный поиск по вопросительному слову с заданными морфологическими признаками не сработает, поэтому искать приходится многократно.

    Спрашиваем:
    Какой мальчик?
    «Какой» – вопросительное слово для прилагательного, то есть в общем случае Ваня должен искать прилагательное. Если в базе для данного существительного находится прилагательное, выдается соответствующий ответ.


    В иной ситуации ответом может послужить не только прилагательное, но и нечто другое, например причастие.


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


    Более сложный, связанный с поиском субъекта, вариант подмены шаблона:


    Подобных вариантов с пару десятков: это то, что мне удалось обнаружить.

    Обратите внимание: один результат может оказаться ответом сразу на несколько вопросительных подтипов.


    На последний вопрос ответа не находится – Ваня соответственно и не отвечает.

    Последовательный поиск по связанным секторам


    Допустим, у чат-бота спрашивают:
    Куда глупый Петя пошел?

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

    Приходится сначала проверять достоверность определений, затем уже отвечать на главный вопрос.


    В данном случае сведения об определении Пети отсутствуют, поэтому отвечать на основной вопрос нет резона.

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

    Я поймал жереха, который погнул весы?
    После разделение предложение преобразуется в секторы:
    Я поймал жереха? Жерех погнул весы?

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

    Противоречивость информации


    Представим, что у ИИ спрашивают, сколько космонавтов летало в космос. Хорошо, если в базе значится одна фраза:
    В космос летало 40 космонавтов.
    А если там другая фраза присутствует?
    В космос летало 45 космонавтов.
    40 или 45, кому верить? Вероятно, один из источников лжет, но который? Можно поверить тому либо другому, но критерии веры каковы? Очевидно, рейтинг источника. Но каким образом ИИ может определить рейтинг источника, если все собеседники для него, строго говоря, одинаковы?

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

    В итоге был реализован следующий механизм:

    1. Рейтинг собеседника рассчитывается на основании отношения выданных новых секторов к общему их числу – соответственно, изменяется с каждой фразой.
    2. Сектору присваивается текущий рейтинг собеседника.
    3. Если секторы разных собеседников антагонистичны, доверие вызывает тот, который обладает наибольшим рейтингом.
    4. Если антагонистичны секторы одного собеседника, последний по времени сектор считается истинным (то есть себя можно в любой момент поправить, но поправить утверждение другого визави возможно, если обладаешь бОльшим рейтингом)).

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

    Думаете, проблема с количеством космонавтов решена? Ничего не решена, потому что оба источника могут оказаться правдивыми. По состоянию на 1 января числилось 40 космонавтов, в течение года 5 человек слетало в космос, по состоянию на 31 декабря числится 45 космонавтов. Только откуда ИИ об этом знать?!

    Инвариантность


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

    Итак, одно и то же сообщение можно сформулировать по-разному:
    Я заболел.
    Мне неможется.
    Меня ломает.
    Плохо себя чувствую.
    Я нездоров.
    Недомогаю.
    Здоровье ни к черту.

    И т.п.

    Кое-какие мелочи на этом пути преодолимы.

    Синонимы – самое очевидное и повсеместно реализованное решение.


    Еще можно использовать однокоренные слова, к примеру:
    Болезнь.
    Боль.
    Заболеть.
    Заболевание.
    Больно.

    Вот фразы с ними, выражающие, по сути, единственную мысль.
    Он подхватил болезнь.
    Он испытывает боль.
    Он заболел.
    У него заболевание.
    Ему больно.


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

    Что такое интеллект


    Речь дошла до интеллекта, на нем и сосредоточусь.

    Лично я (хотя у каждого собственное мнение, понимаю) насчитываю три пункта, делающие мыслящее существо таковым:
    1. Обратная связь.
    2. Мышление.
    3. Рефлексия.

    Обратная связь – зависимость реакции от предыдущего опыта. Реализуется примитивным образом, за счет записи информации в базу данных. Сначала ИИ чего-то не знал, потом услышал, запомнил и теперь знает – это и есть обратная связь.

    Мышление – процесс генерирования новой информации, непосредственно не получаемой от собеседника. Собеседник выдает сообщение, ИИ анализирует и приходит к собственным выводам.

    Ваня Разумный делает выводы, затем записывает их в базу с пометкой «идея» (свойство сектора). Все мышление, собственно.

    Так мыслим мы:


    Так должен мыслить ИИ:


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

    Мышление при помощи классов


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

    Правила пользования тривиальны:

    1. Понятия могут относиться одновременно к нескольким классам. Например, Сидоров одновременно относится к классу мужчин и к классу курильщиков.
    2. Классы не могут зацикливаться в своей иерархии. Понятие, расположенное на какой-либо иерархической ветке, не может повториться ниже или выше по своей иерархии. Если Сидоров относится к классу курильщиков, то курильщик не относится к классу Сидоровых.

    Самое познавательное не в классах и не в их членах, а в том, откуда взять нужную информацию для таксономии.

    Придумалось следующее.
    Во-первых, определять принадлежность того или иного понятия к классам из дефиниций – так сказать, напрямую.


    Если Жучка собака и все собаки гавкают, довольно очевидно, что Жучка тоже умеет гавкать.
    Заменим в исходном утверждении «собаку» на «Тузика». Логично предположить, что если собака Тузик умеет гавкать, то и собака Жучка тоже умеет?


    Не логично. Что если вместо «гавкать» вставить «рожать щенят»? Тузик этого не умеет, а Жучка – запросто. По этой причине поиск выдал отрицательный результат. Вместе с тем был обнаружен альтернативный сектор (умение Тузика гавкать), который и стал ответом – по-моему, достаточно познавательным.

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


    Я ни словом не обмолвился, что Жучка – собака: Ваня Разумный сам сделал вывод из полученной информации. В ином случае мог и ошибиться: к примеру, если бы я написал «Тузик – это кобель», потому что Жучку к кобелям никак не причислишь. Пришлось бы вносить коррективы.

    Что я и сделал, собственно, а Ваня соответствующим образом среагировал, хотя не без огрехов.


    Следующий способ – некоторые вопросительные наречия (куда, где, откуда, когда). Если такая склейка относится к слову, можно сделать вывод о принадлежности слова к определенному классу (места или времени).


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


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

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


    Если вы полагаете, что мыслите как-то иначе, то навряд ли… Представьте, что знакомый Петров хвастает: «У меня дочь – первоклассница». Что вы можете сказать о его дочери, о которой впервые слышите? Принадлежность к классу «первоклассница» говорит о возрасте субъекта. Возраст (тоже в некотором смысле класс) свидетельствует о примерном росте, весе, интеллектуальных возможностях и прочем. Женский род (опять-таки класс) позволяет предположить первичные и вторичные половые признаки, а принадлежность к фамилии «Петров» (класс, все класс) доказывает, что искомая первоклассница такая же дура, как все известные вам Петровы.

    А если серьезно, то в своих выводах мы оперируем принадлежностью субъекта к определенному набору классов, а более ни к чему. И чем наше хваленое человеческое мышление отличается от заурядных машинных алгоритмов?! Ничем.

    Мышление при помощи каузальности


    Процесс мышления следует базировать не только на классах, но и на каузальности (причинно-следственных связях).

    Над Атлантикой изменилось давление, поэтому подул ветер. Подул ветер, поэтому с головы слетела шляпа. С головы слетела шляпа, поэтому шляпа упала в лужу. Шляпа упала в лужу, поэтому шляпа промокла.
    Если идти по каузальной цепочке с конца в начало, неизбежно придем к начальному выводу:
    Шляпа промокла, потому что над Атлантикой изменилось давление.
    И попробуйте сказать, что вывод неверен!
    А ведь подобные каузальные цепочки могут составляться не только по последовательным, но и по разрозненным фразам, в результате выводы, сделанные ИИ, окажутся неожиданными!

    Есть и второй способ установить каузальность. Он связан с использованием известной нам триады: субъект – действие – объект.

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


    Указанная последовательность представляет собой каузальную цепочку, в которой:

    а) причиной того, что гантель упала, является то, что дедушка взял гантель,
    б) причиной того, что нога заболела, является то, что гантель упала на ногу.

    Чистый синтаксис, при котором ИИ понятия не имеет, ни что такое дедушка, ни что такое гантель, ни что такое нога.

    Согласно имеющейся базе знаний, гантель может упасть на ногу только в названном случае – ни в каком другом.

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

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

    Имеем веер сходящихся возможностей, весьма пригодный для анализа.


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

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


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

    Образчик реализации:


    Ущипните меня, если это не мышление!

    Конечно, наличие каузальности далеко не очевидно, если наблюдатель находится в физическом мире.
    Я увидел березу. Береза шелестела листвой.
    Нам, существующим вне правил синтаксиса, понятно, что береза шелестит листвой вовсе не оттого, что кто-то ее увидел, но с точки зрения синтаксиса дела обстоят именно так. Кто бы тогда шелестел листвой, если бы я не увидел?!

    Сколько пользуюсь русским языком, столько убеждаюсь, какое это расчудесное чудо!

    Рефлексия и параллельные миры


    Помимо обратной связи и мышления, ИИ требует рефлексии.

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

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

    Можно, к примеру, генерировать мысли по репликам собеседника: собеседник выдает информацию об ИИ – тот анализирует и приходит к каким-либо выводам. В процессе анализа несомненно рефлексирует: осознает себя.

    Можно отталкиваться от сообщений не собеседника, но собственных.

    Допустим, сгенерирован вопрос, в соответствии с объявленной выше схемой:
    Что такое движение?
    Что это означает? То, что означает: сгенерирован вопрос. Идея записывается в качестве таковой, от имени ИИ:
    Я задал вопрос.
    В базу записываем, но в качестве ответа не выводим: это и есть рефлексия.

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

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


    В высшем мире, соответствующем нашему миру идей, рождаются мысли. Одни мысли относятся к внешнему миру (не рефлексия), другие – к самому себе (рефлексия).
    Собеседник задал вопрос.
    Я ответил на вопрос.

    Или:
    Собеседник почему-то волнуется.
    Я абсолютно спокоен.


    Миры смешиваются воедино, иногда до полной неразличимости.

    Реплика:
    Ты точно влюбился?
    Ее основная смысловая часть «ты влюбился?» принадлежит непосредственно диалогу, тогда как наречие «точно» – внешнему миру идей. Полная реконструированная фраза должна бы звучать следующим образом:
    Ты точно уверен, что ты влюбился?
    Первая часть фразы относится к миру идей, тогда как вторая – к миру диалога.

    В результате, при работе с параллельными мирами возникает необходимость обрабатывать не только семантику сообщений, но и некие внешние по отношению к ним характеристики. Вот только как?

    Допустим, собеседник спрашивает:
    — Сколько сейчас времени?

    Ориентируясь на низовой смысловой мир сообщений, ИИ должен бы начать шерстить по всей базе в поисках ответа.
    Допустим, найдет фразу полугодичной давности:
    Сейчас 15 часов 30 минут.
    Вряд ли устаревшее сообщение послужит корректным ответом на текущий вопрос. А чтобы данные о текущем времени не устаревали, всегда были свежими, необходимо каждое – о Господи! – мгновение генерировать сообщение типа:
    Сейчас 15 часов 30 минут 28 секунд 34 миллисекунды.
    База не потянет.

    Какого черта лазить по базе, если можно возвратить системное время, тем самым обратиться непосредственно к внешнему по отношению к диалогу миру?! Можно, конечно, но…

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

    Оптимизация


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

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

    Возьмем вопрос:
    Доктор увидел бегемота?
    Синоним «доктора» – «врач», а синоним «бегемота» – «гиппопотам», в результате получаем 3 дополнительных варианта:
    Врач увидел бегемота.
    Доктор увидел гиппопотама.
    Врач увидел гиппопотама.


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

    Ладно, не проблема: вбить перечисления в один SQL-запрос. Хотя длина строки тоже небесконечна, приходится ее контролировать, но не суть дело…

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

    Во-первых, по каждому слову необходимо проверять на отрицания:
    Не доктор увидел бегемота?
    Доктор не увидел бегемота?
    Доктор увидел не бегемота?


    Во-вторых, приходится осуществлять альтернативный поиск иного рода – я упоминал об этом ранее. Это когда на вопрос «какой?» последовательно перебираются конструкции, образованные на основе прилагательного, причастия, глагола.

    Как быть? Если сократить количество SQL-запросов, ИИ лишится многих возможностей анализа, соответственно пострадает разнообразие ответов.

    Тут на меня снизошло озарение. Зачем искать по базе, если каждое утверждение само по себе является ответом на известное множество вопросов?!

    Некто утверждает:
    Маруся пошла в кино.
    Данное утверждение является ответом на общий вопрос:
    Маруся пошла в кино?
    Также оно является ответом на общий вопрос с отрицанием:
    Маруся не пошла в кино?
    Можно, добавляя вопросительные слова, составить и специальные вопросы, к примеру:
    Кто пошел в кино?
    Куда пошла Маруся?

    Ответом на все названные вопросы является текущий сектор.

    Значит, конструируя вопросы разных типов, можно вписывать их в базу, а в качестве ответа соотносить с ними исходный сектор-утверждение! При этом система не перегружается SQL-запросами: диалог течет заметно веселей, чем прежде.

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

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

    Приведенным способом возможности оптимизации не исчерпываются. Но… как говорится, чем богаты.

    Принципиальная схема


    Принципиальная схема Вани Разумного получилась такой:

    1. Парсим текст при помощи библиотеки Solarix.
    2. Обрабатываем, преобразуя в списки элементов и свойств.
    3. Пишем в базу.
    4. В момент записи связываем будущие потенциальные вопросы с текущим утверждением.
    5. Ищем, что сказать в ответ (сектор).
    6. Одновременно генерируем собственные мысли (в текстовом виде).
    7. Преобразуем сектор обратно в текст (словоформы восстанавливаем при помощи библиотеки LingvoNET).
    8. Выдаем ответ собеседнику.
    9. Параллельно обрабатываем и записываем мысли.

    О программе


    Многое из задуманного не реализовано, да и вряд ли будет реализовано в будущем. Причин две:

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

    2. Во-вторых, явная (лично для меня) коммерческая бесперспективность данного мероприятия. Убивать еще год, чтобы удовлетворить лишний десяток читателей данного ресурса? А зачем Циолковскому самому строить в гараже ракету, если принцип реактивной тяги им сформулирован? Возникнет интерес у серьезных дяденек, можно будет ваять далее, по накатанной колее и с гораздо бОльшим успехом, а пока других дел по горло. Так что Ваня Разумный – не более чем прототип будущего ИИ.

    Между прочим, назначение будущего полноценного ИИ вовсе не выполнение голосовых команд, как то практикуется современными голосовыми помощниками, а…

    1) Компьютерная психотерапия.
    Вы возвращаетесь с работы расстроенный и говорите ИИ:
    «Начальник дурак».
    «Форменный остолоп», – заинтересованно отзывается ИИ.
    Далее в том же духе. Подобный диалог проведешь не с каждым собеседником, даже близким родственником, а с компьютерным устройством – пожалуйста. Для чего устройство должно быть соответствующим образом, с учетом ваших индивидуальных характеристик, настроено и воспитано.

    2) Тестирование на достоверность.
    Как следует из всего текущего поста, синтаксис обладает собственной семантикой, которая может быть соотнесена с чьими-нибудь выводами. Следовательно, ИИ способен проверять утверждения на достоверность, соотнося их с предыдущими известными ему утверждениями. А если ИИ не чат-бот, а устройство, обладающее видеокамерой и другими датчиками ощущений, то не только с утверждениями собеседников, но и с реальным миром, который, как мы помним, лишь совокупность визуальных точек и иных элементарных объектов. Мы воспринимаем (видим и иным образом ощущаем) здания, деревья, облака, но ведь ИИ может воспринять нечто другое, неожиданное, «замыленное» для человеческого глаза. Что, согласитесь, гораздо интересней…

    Скачать релиз можно здесь.

    Исходники тут, если найдутся желающие копаться в дилетантском коде. Зачем нужен код, если Ваня Разумный – лишь иллюстрация к текущему посту, излагающему принципы создания ИИ методом «глокой куздры»?!

    Системные требования
    Необходимы 32-разрядные Microsoft Office и Windows. При 64-разрядной Windows требуется установить утилиту Microsoft Access Database Engine 2010 (32-разрядную).

    Ну и в напоследок.

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

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

    Прорабатывал вопрос с закачкой словарей, в конце концов отказался от мысли. Орфографический и синонимов закачать еще можно (хотя ну очень долго), а вот толковый – никак. В словарях значится, к примеру:
    Сидоров – композитор. Кантаты, сюиты.
    Альпы – горный массив. Добыча руды. Туризм.

    А мне нужно:
    Сидоров – композитор. Сидоров – автор кантат, сюит.
    Альпы – горный массив. В Альпах добывают руду. В Альпах развит туризм.

    То есть с толковыми словарями полная несовместимость: немыслимо на уровне синтаксиса определить, где «автор», а где «добывают». Собственно, и словарей-то в сети не так чтобы много. Требовались: толковый, синонимов, однокоренных слов, фразеологизмов, гиперонимов… Да чего уж теперь!

    Если, вдохновленные текущим постом, вы решились-таки убедиться, насколько автор криворукий, то пополнять базу можно двумя способами: либо диалогом, либо закачкой текста. Закачиваемые фразы лучше начинать с новой строки.

    Образчик текста для закачки
    Ты умеешь мыслить.
    Ты умеешь запоминать.
    Ты обладаешь памятью.
    Успех – это достижение заветной цели.
    Ты не можешь двигаться.
    Ты не можешь осязать.
    Ты не можешь нюхать.
    Я думаю недолго, потому что мои алгоритмы действуют быстро.
    и т.д.

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

    Синонимы устанавливаются по шаблону:
    Врач, доктор – это синонимы.

    То же – антонимы (которые на самом деле лишь члены класса, что я сообразил далеко не сразу. Белый и черный – антонимы. Однако синий, зеленый и т.д. члены того же класса, поэтому антонимы как сущность у меня отсутствуют – при указании антонимов записываются члены класса).
    Белый и черный – это антонимы.

    Стандартные ответы устанавливаются в диалоге. Пример я приводил, но повторю:



    При закачке стандартный ответ размещается следом за исходной фразой:
    Ты молодец.
    Отвечай: Ты тоже.


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

    Все советы, собственно.

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


    С этой стороны я своей интеллектуальной одиссеей доволен. Кристальная ясность в голове: что в рамках синтаксиса можно реализовать, а чего нельзя. И полная уверенность в том, что для создания искусственного существа недостает механики и вычислительных мощностей, а что касается принципов мышления, будь то на основе синтаксиса, зрительного или иного восприятия либо комбинированным способом, – теоретические препятствия отсутствуют.
    Поделиться публикацией
    Комментарии 251
      +1
      Возникла идея, запихивать в него научный текст и выуживать информацию вопросами. Что то типа интерактивного поиска.
        0
        Теоретически возможно в том случае, если содержание научного текста соответствует правилам синтаксиса. Для имеющихся научных текстов такое, увы, невозможно: нужно строить ИИ, воспринимающий физический (зрительный, звуковой и т.п.) мир.
          0
          «научный текст и выуживать информацию вопросами»
          Первый пример. Причём, не нужен посредник в виде очередного Вани — ввод и контроль сразу осуществляется коллективом людей. Т.е., отпадает надобность в проверке создаваемой тривиальной модели мира на близость к реальной тривиальной картине мира (для научной информации, конечно, требуется эксперт).
          +8
          Prolog-машина по русски. Ну прикольно че.

          Только такие технологии ИИ называли в 70 годы прошлого века.
            –2
            Не знаю, может быть. Только ведь дело не в технологиях, а в принципах. Сдается мне, что современные ИИ используют другие принципы, и я не уверен, что это правильный путь.
              +4

              Если не ошибаюсь, разработка ИИ на основе пролог-машин закончилась тем, что база правил разрасталась, становилась запутанной и противоречивой. Не взлетело.


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

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

                  Это можно проверить, только если предмет, о котором говорит собеседник, попал в камеру. Если предмет абстрактный или невидимый камерой — сразу проблема. И ещё невозможно проверить, не врёт ли камера (например, объект можно не заметить из-за недостаточных характеристик камер или ошибок в системе распознавания объектов)


                  если для чат-бота единственным способом восприятия окружающего мира является услышанная фраза, почему ей не верить?

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


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

                    0
                    Это можно проверить, только если предмет, о котором говорит собеседник, попал в камеру.

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

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

                    Только это будет проверка с точки зрения синтаксиса, не более.
                    Что касается конкретных решений, так ведь Ваня Разумный — сделанный любителем прототип. Оценка достоверности — в нем не самое, в случае чего переписать можно.
            +1
            Идею вполне реально допилить напильником, скорость можно увеличить нормальной БД и апгрейдом архитектуры (это не критика это выводы из того что я вижу). А вообще вы озвучили то над чем я давно сам задумывался. Только я предполагал развивать на основе объектной модели и для начала там надо было бы составить достаточно приличный словарь. Зато в перспективе можно было бы более точно объяснить суть нового понятия и вполне вероятно что при достижении критической точки такой алгоритм мог бы начать «делать выводы» заполняя пробелы по принципу дедукции.
              0
              Кто бы сомневался, что можно допилить и скорость увеличить тоже. Я ж любитель-самоучка, меня методы создания ИИ интересовали, а не программный код. Если раньше я принципы мышления лишь формулировал, то теперь воплотил на практике, насколько смог. А словари, да, мне их сильно недоставало. То, что удалось нагуглить, использовать не смог, к сожалению — об этом я написал.
                0
                Жаль что вы не хотите заниматься вопросом дальше. Сам я тоже проект бы такой не начинал, а вот в команде думаю был бы смысл. Да и приткнуть даже на вскидку как минимум в 2 места с коммерческим выхлопом можно было но в таком случае надо шевелить поршнями :) для чего и нужна команда.
                  0
                  Заниматься далее или нет, это я по наитию действую. Сегодня мне наитие одно говорит, а завтра другое. Его, это наитие, не поймешь…
                  Знаете, некоторые вещи я очень хорошо понимаю:
                  1. У меня отсутствуют способности к бизнесу. То есть любой мой личный коммерческий проект обречен изначально на неуспех, это я на своей шкуре неоднократно испытывал. При том что, случалось, коммерсанты на моих познаниях и способностях неплохо наживались.
                  2. Программист я начинающий, поэтому сам коммерческий продукт не осилю в любом случае.
                  3. Данный проект зависит от библиотек, которые я назвал в посте. Без них ничего не получится, поэтому с авторами данных библиотек придется так или иначе договариваться.
                  4. Нужны словари, причем некоторые придется приводить к пригодному для обработки виду.
                  Для меня идеальным был бы вариант, чтобы за проект взялся именно коммерсант, чтобы зарплату платил со всеми вытекающими, команду собрал и, главное, знал, зачем и для чего это ваяется. А то, что на озвученных в посте принципах можно сделать ИИ, в этом у меня никаких сомнений нет. Мне известно как.
                    0
                    Относительно библиотек. Есть opencorpora. Это открытый проект. Из нее легко делается база данных, которая выдает набор требуемых признаков для любого слова. Могу прислать готовое решение.
                      0
                      Спасибо, посмотрю. Хотя не уверен, что хватит квалификации использовать. В свое время я искал, искал — почти ничего. Странно.
                        0
                        Обращайтесь помогу. Там все просто, работы минут на 10.
                          0
                          Спасибо большое. Если продолжу работы в данном направлении, обращусь.
              +2
              Нюансы, которые легко распознаются людьми по мимике и интонации собеседника, но не могут быть идентифицированы на синтаксическом уровне.

              Да, конечно. Особенно в чате.


              То, что у бота нет глаз — не существенно. У слепых с рождения тоже нет глаз.


              Вообще то, что вы делаете, напоминает экспертные системы из 70-х. Интересно, но прорывов в таком подходе не видно. За саму статью спасибо, увлекательно.

                +1
                У пользователей чата многолетний опыт восприятия физического мира, поэтому мимика не важна, стилистика сообщения вполне ее заменяет. У чат-бота такого опыта нет по определению, поэтому чат-бот не способен отлавливать стилистику на уровне синтаксиса.
                Отсылку к 70-м я сам дал, однако «старая» технология не значит плохая. Преследуя определенные цели, вполне возможно вместо «старой» подсунуть «новую» технологию: объявив ее новомодным трендом, предоставив деньги на развитие и т.п. Не правда ли?
                  0
                  У пользователей чата многолетний опыт восприятия физического мира

                  У чат-бота такого опыта нет по определению

                  Вот это очень тонкий вопрос. Например, у openai есть очень классная работа по переносу восприятия "физического мира" из симуляции в реальный. Научили руку манипулировать кубиком.


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


                  Так что "по определению" я считаю неверным. Нет такого определения, которое запрещает чат-боту набирать опыт. Вопрос в алгоритме.

                    0
                    Вопрос не только в алгоритме, но и в вычислительной мощности, при недостатке которой никакой алгоритм не поможет.
                    Что касается openai, то я не в курсе их достижений, но саму постановку вопроса считаю ошибочной. Это две разных задачи, создание ИИ и эмулирование реальности, зачем их смешивать? К тому же никакая виртуальная реальность не обучит ИИ по-настоящему, по причине, которой я коснулся в посте. Если принять за аксиому, что зрительный мир — совокупность цветных точек, то нет никаких гарантий, что ИИ с видеокамерой начнет воспринимать те же объекты, что человек, и трактовать их по-человечески. Он ведь другое может увидеть! А обучать ИИ на примерах, как это делают нейронные сети, значит подгонять результат эксперимента под желаемые выводы. Посему ИИ должен обучаться не в виртуальном мире, а в нашем с вами — физическом.
                    Два дня, говорите? Хм… То есть человек, по образцу которого мы мечтаем слепить ИИ, достигает совершеннолетия в 18 лет, а ИИ за пару дней справится? С чего бы это? Возьмите годовалого ребенка и попробуйте за пару дней вбить в его голову Брокгауза и Евфрона, посмотрю, что у Вас получится. А ведь ребенок — урожденный интеллектуал, у него нейронные связи в черепе настроены к восприятию окружающего мира.
                    И с последним Вашим выводом тоже не соглашусь, Вы приписали мне мысль, которую я не озвучивал. Чат-бот может самостоятельно набирать опыт, но в рамках своего способа восприятия. Если это восприятие — речь, то информацию чат-бот способен почерпнуть только из речи, а семантика речи определяется синтаксисом. «Объяснить» тот или иной термин чат-боту мы можем, конечно, но это внешнее, не самостоятельное знание, см. пример с вопросом «Сколько времени?».
                      0
                      эмулирование реальности

                      Конечно это отдельная задача. Но она поможет обучать ИИ быстрее. Не за 25 лет, как живых людей в обычной реальности, а за неделю.


                      К тому же никакая виртуальная реальность не обучит ИИ по-настоящему, по причине, которой я коснулся в посте.

                      Честно говоря, не понял этой причины. ИИ без проблем можно научить выделять те же самые предметы из "совокупности цветных точек". Это сделать гарантированно можно — выделение предметов — хорошо изученная задача.


                      значит подгонять результат эксперимента под желаемые выводы.

                      Только если обучающие примеры подогнаны под желаемые выводы. Но даже это не плохо. Хочешь получить ИИ-строителя — даёшь больше строительных примеров, это нормально.


                      ИИ за пару дней справится? С чего бы это?

                      Нет фундаментальных проблем на рост объема вычислительных мощностей и скорости прогонки примеров. Я потому пример с openai и привёл. Другие исследователи считают, что обучать нужно в физическом мире, т.к. симулировать нереально сложно. И обучают месяцами. Они обучили за 50 часов — двое суток.


                      Возьмите годовалого ребенка и попробуйте за пару дней вбить в его голову Брокгауза и Евфрона

                      Конечно нельзя, об этом и речь — скорость обучения машины выше, чем у человека. Пробуйте вбить в него за месяц игру Го. Для машины это сделано — за месяц она обучается играть на голову выше лучших игроков мира, которые учились 20 лет.

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

                        Если это цветные точки, то совокупность может оказаться иной. Человек видит зайца, а ИИ увидит нечто совершенно другое, так как скомпонует цветные точки иным образом.

                        Го — слишком специальная задача для мышления: наш мир сложней. Честно говоря, игровые программы я вообще не отношу к ИИ: принципы мышления, соответственно методы реализации, кардинально различаются.
                          0
                          ИИ увидит нечто совершенно другое

                          Чем обосновано это утверждение? ИИ увидит то, чему обучат. Даже в вашей статье — сказал, что щука — это рыба и чат-бот запомнил. Если ИИ учить, что эта совокупность точек — мяч, а он "увидел", что это облако — это всего лишь сбой.


                          принципы мышления, соответственно методы реализации, кардинально различаются.

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


                          Го — слишком специальная задача для мышления: наш мир сложней.

                          Вы правы, мир движется поступательно. Сначала решается более простая задача.

                            0
                            Читал, что какое-то первобытное племя не видит самолетов в небе – просто не видит, и все. Еще читал, что индейцы не замечали подошедших к берегам кораблей Колумба, потому что… просто не замечали. А заметили после того, как им объяснили, как надо смотреть – то есть каким образом увязывать цветные пиксели в конкретные предметы. Я этим псевдогеографическим байкам верю: такие зрительные парадоксы представляются мне правдоподобными.

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

                            Насколько я понимаю (хотя понимаю я в этом совсем немного), принцип действия нейросетей кардинально противоположен тому, что я предлагаю. То, что мне известно о мышлении, я перечислил (в этих абзацах, кстати, основная эвристическая ценность данного поста): классы и каузальность. Человек мыслит именно таким способом. Если для определения классов и установления каузальных цепочек следует использовать нейронные сети, я совершенно не против. Только не понимаю, каким образом это возможно? И зачем, если подобное достижимо без всяких нейронных сетей?
                            Какую ссылку признать надежной, каждый решает сам. Я обрадуюсь, если кому-то понадобится ссылка на текущий пост.
                              0
                              То, что мне известно о мышлении, я перечислил [...]: классы и каузальность. Человек мыслит именно таким способом.

                              Кстати, а на чем основано утверждение об "именно таким способом"?


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

                              Задача классификации — классическая задача машинного обучения, и нейронными сетями (в том числе) она вполне решается. В частности, (обученная) нейронная сеть вполне способа по фразе "Жучка гавкала" сказать "Жучка — собака", а по набору данных "Жучка гавкает; Тузик гавкает; Жучка — собака; Тузик — собака" построить соответствие "собаки гавкают" (собственно, такое соответствие и будет основанием для решения выше).

                                0
                                Кстати, а на чем основано утверждение об «именно таким способом»?

                                На мышлении — только не чат-бота, а моем. Я проанализовал все, что мне известно о человеке в частности и мироустройстве в целом, и пришел к такому выводу. А Вы каким-то иным способом мыслите?
                                Задача классификации — классическая задача машинного обучения, и нейронными сетями (в том числе) она вполне решается.

                                В нейронных сетях я не спец, остается поверить на слово.
                                Я при решении данной проблемы обошелся заурядной реляционной базой. Вообще, я методолог, меня методы интересуют, а не инструментарий.
                                  0
                                  А Вы каким-то иным способом мыслите?

                                  Я знаю, что мои представления о мышлении регулярно не совпадают с проявлениями мышления у других людей. Следовательно, мои представления о мышлении не универсальны.


                                  Вы же на основании наблюдений за своим мышлением делаете громкое утверждение, что человек в общем мыслит именно так.


                                  Я при решении данной проблемы обошелся заурядной реляционной базой.

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

                                    0
                                    Вы же на основании наблюдений за своим мышлением делаете громкое утверждение, что человек в общем мыслит именно так.

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

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

                                      Нет, для меня принципиально не делать утверждений "человек думает именно так" и "поэтому ИИ должен думать именно вот так".

                                        0
                                        Ну хорошо, в этом вопросе у нас разные мнения. Было бы странным, если бы мнение автора статьи совпало с мнениями всех без исключения читателей.
                    0
                    Да, старая технология из 70х весьма неплоха, более того, наконец-то есть шанс реанимировать её на новых принципах и на новых мощностях.
                    Кстати, подробнее про нюансы «старой технологии», рекомендую статьи про Cyc, они в своё время ушли дальше всего.
                      0
                      Спасибо, прочитаю.
                      +1
                      ))) Да половина стартапов, у которых в описании машинлернинг, под капотом имеют череду старых добрых ифов))) А что касается эмоций, то вы взгляните в современнную переписку там смайликов больше чем текста.
                    +1
                    Мышление – процесс генерирования новой информации, непосредственно не получаемой от собеседника.

                    Исходя из этого определения, любой вычислительный процесс есть мышление. Это точно правильное определение?

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

                        Ну смотрите, вот нам на вход подали пятнадцать чисел, мы вернули их среднее и описывающее их распределение. Это новая информация, она ниоткуда не "считана".


                        Мышление?

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

                            Каких именно?

                              0
                              Ну назвал же…
                              Генерирует — означает, что информация новая: не считываемая откуда-то. При этом то, что генерируется, должно признаваться информацией: собеседник должен воспринимать ее в качестве таковой. При условии что процесс происходит в объекте, признаваемом за мыслящий, для чего требуется соблюдение, помимо мышления, некоторых других условий (обратная связь, рефлексия).

                              Можно и подробней.
                              Есть 15 чисел. Высчитываем среднюю. Необходимые условия мышления:
                              1. Обратная связь: ставим среднюю в ряд к предыдущим 15-ти.
                              2. Рефлексия: устройство различает числа, услышанные от собеседника и сгенерированные самостоятельно, также историю их создания (от каких родителей сгенерировано). Соответственно, появляется возможность анализа собственных мыслей и услышанного.
                              3. Мышление: собственно процесс генерирования средней.
                              4. Имеется собеседник, для которого числа — нечто значащее.
                              5. Ведется общение, то есть некоторые числа поступают от собеседника, а некоторые возвращаются к собеседнику в виде ответных реплик.
                              Да, это и есть мыслящее существо. Только, пожалуйста, не путайте сложность системы с принципиальной схемой.
                                0
                                Ну назвал же…

                                Там нет ничего конкретного, к сожалению. В моем примере


                                • информация ниоткуда не считывается (чек)
                                • признается собеседником за информацию (чек)

                                А вот признание объекта за мыслящий — это же субъективная оценка, как на нее можно опираться? Хуже того, это же получается рекурсивное определение: чтобы объект признавался мыслящим, он должен мыслить, но чтобы понять, что такое мышление, оно должно происходить в мыслящем объекте.


                                Необходимые условия мышления:

                                Таким образом, строго детерминированная программа вычисления среднего, адаптированная под чат-бот, является мыслящим существом. По вашему определению.


                                Тогда у меня есть вопрос: почему вы утверждаете, что "многие [...] собратья [Вани Разумного], в первую очередь созданные на основе нейронных сетей, [...] только притворяются разумными, но по факту являются ими не более чем пластмассовые куклы"? На основании какого формального критерия вы проводите это различение?

                                  –1
                                  Выписка чека не является мышлением, так как отсутствуют другие условия, в частности рефлексия.

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

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

                                    А откуда внезапно взялась выписка чека? Я даже не понимаю, о каком именно процессе вы говорите.


                                    Мне казалось, что нейронные сети требуют обучения на основе объемных баз, тем самым обученный субъект реагирует «как полагается в общем случае», а не на основе понятных алгоритмов.

                                    И что? Человек тоже реагирует на задачу классификации далеко не всегда на основе понятных алгоритмов.


                                    Если Вы правы относительно применимости нейронных сетей к классификации,

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


                                    Переформулирую: устройство должно использоваться для двухстороннего обмена информацией.

                                    То есть человек, который решает задачу в уме, не мыслит, потому что двустороннего обмена информацией не происходит. Так?

                                      0
                                      Человек тоже реагирует на задачу классификации далеко не всегда на основе понятных алгоритмов.

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

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

                                        Какие "данные"? Которыми человек пользуется? Нет, не обязательно.


                                        В противном случае ничего написать невозможно, можно вот именно что «обучать».

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


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

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

                                          0
                                          Какие «данные»? Которыми человек пользуется? Нет, не обязательно.

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

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

                                          Ну расширьте определение, если не устраивает. Пусть будет: для двухстороннего обмена и действий в реальном мире.
                                            0
                                            Нет, не которыми человек пользуется, а которые Вы собираетесь вложить в ИИ. Они, извините, обязательны.

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


                                            Вы действительно не видите разницы между обучением кого бы то ни было и его созданием?

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


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

                                            А, этот пункт тогда будет применим к любому алгоритму вообще и, как следствие, незначимым для определения мышления.


                                            Что снова возвращает нас к вопросу, по какому критерию вы разделяете "мыслящие" и "немыслящие" реализации ИИ.

                                              –2
                                              Ну так люди, которые пишут те или иные алгоритмы машинного обучения, знают, как эти алгоритмы работают. Нейронных сетей это тоже касается.

                                              Алгоритмы обучения или создания? Я привык думать, что нейронная сеть — черный ящик.
                                              вот для обучения совершенно не обязательно понимать, как именно оно происходит, до тех пор пока результат нас устраивает.

                                              Прежде чем обучать, необходимо же создать! Вы все время создание подменяете обучением.
                                              Что снова возвращает нас к вопросу, по какому критерию вы разделяете «мыслящие» и «немыслящие» реализации ИИ.

                                              Если устройство осуществляет выбор из имеющихся вариантов, оно немыслящее; если генерирует новую информацию — мыслящее.
                                              Вы все за нейронные сети ратуете. Ну, если они способны генерировать новую информацию по настраиваемым алгоритмам, а не методами теории вероятности, мои извинения, Вам лично и нейронным сетям.
                                                +1
                                                Алгоритмы обучения или создания?

                                                И те, и другие.


                                                Я привык думать, что нейронная сеть — черный ящик.

                                                Это представление приблизительно настолько же верно, насколько верно утверждение "программа — черный ящик".


                                                Прежде чем обучать, необходимо же создать! Вы все время создание подменяете обучением.

                                                Не подменяю. Я просто говорю, что это разные моменты, требующие разных навыков.


                                                Если устройство осуществляет выбор из имеющихся вариантов, оно немыслящее

                                                То есть музыковед, относящий по результатам анализа то или иное произведение к той или иной музыкальной форме — не мыслит?


                                                Вы все за нейронные сети ратуете.

                                                Я? Нет.


                                                Ну, если они способны генерировать новую информацию по настраиваемым алгоритмам, а не методами теории вероятности

                                                Подождите-подождите, а почему вдруг алгоритм стал критерием мышления? Вроде бы только что критерием было то, получаем мы "новую" информацию или нет.

                                                  0
                                                  То есть музыковед, относящий по результатам анализа то или иное произведение к той или иной музыкальной форме — не мыслит?

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

                                                  Возможно, я неточно выразился. Критерием является новая информация, конечно.
                                                    0
                                                    Если музыковед, обнаружив новаторское произведение, не в состоянии дать определение новой музыкальной форме

                                                    Во-первых, вы ушли от ответа на мой вопрос. Давайте, все же, к нему вернемся: человек, осуществляющий классификацию в существующие классы — мыслит, или нет?


                                                    Ну и на всякий случай:


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

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


                                                    Более того, способность музыковеда дать или не дать такое определение зависит не от того, является ли он мыслящим существом (потому что все музыковеды являются мыслящими существами, вне зависимости от того, что вы об этом думаете), а от его навыков и таланта.


                                                    Критерием является новая информация, конечно.

                                                    Так все же, классификация в известные категории — это новая информация или нет?

                                                      –1
                                                      Да, в музыковедении не силен.
                                                      Однако Ваш пример притянут за уши. «Если музыковед сидит на диване, он мыслящее существо или нет?». Мыслящее, только его текущее действие к мышлению не относится. Точно так же, когда музыковед классифицирует произведения: если при этом генерируется новая информация, он мыслит; в противном случае не мыслит. При этом музыковед — мыслящее существо.
                                                        0

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


                                                        Что опять возвращает нас к вопросу критериев "мышления" и "разумности".

                                                          0
                                                          Если новая, тогда процесс мышления имел место. И что? Несколько утерял ход мысли.
                                                            0

                                                            В таком случае любой классификатор, вне зависимости от алгоритма и реализации, "мыслит".


                                                            (а у какого-нибудь SGD, как, впрочем, и любого другого алгоритма с частичным обучением, будет и "обратная связь", и "рефлексия")


                                                            … что возвращает нас к вопросу критериев "разумности".

                                                              0
                                                              А что такое SGD? Значений многовато:
                                                              www.abbreviationfinder.org/ru/acronyms/sgd.html
                                                                  0
                                                                  У него есть рефлексия? Сомневаюсь.
                                                                  К тому же не вижу темы для спора. Если мы делаем ИИ «под человека», то изначально признаем, что человек — машина. В этом смысле нет никакой разумности вообще, есть обратная связь, рефлексия, мышление (или любые другие критерии, на выбор). Подгоните под них стиральную машину — она тоже разумной окажется.
                                                                    0
                                                                    У него есть рефлексия? Сомневаюсь.

                                                                    Давайте начнем с определения рефлексии.


                                                                    К тому же не вижу темы для спора

                                                                    Ну то есть вы снимаете все свои утверждения, что ваш "Ваня разумный" — разумен, а остальные алгоритмы машинного обучения — нет?


                                                                    изначально признаем, что человек — машина. В этом смысле нет никакой разумности вообще

                                                                    Это в вашей системе определений, возможно, но не в моей.

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

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

                                                                      Рефлексия в моем понимании — это восприятие себя отдельно от внешнего мира. Для чат-бота рефлексия — это восприятие отдельно своих фраз от фраз собеседника, что дает возможность раздельно анализировать поведение собеседника и свое поведение. Как возможна рефлексия, см. в статье, схемки приложены.
                                                                        0
                                                                        Если нейронные сети действительно берут пример с собачками, беру свои слова назад.

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


                                                                        Рефлексия в моем понимании — это восприятие себя отдельно от внешнего мира. Для чат-бота рефлексия — это восприятие отдельно своих фраз от фраз собеседника, что дает возможность раздельно анализировать поведение собеседника и свое поведение.

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

                                                                          0
                                                                          Значит, принципиально это мыслящее устройство. Вы этого признания от меня ожидали?
                                                                            0

                                                                            Теперь осталось, собственно, разобраться с этой фразой:


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

                                                                            О каких именно "собратьях" идет речь, и по каким формальным критериям "Ваня" — разумен, а "собратья" — нет?

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

                                                                                Так обучали одну из версий АльфаГо. Она играла сама с собой и никаких других примеров не видела. Нейронная сеть может обучаться на некоторой «воображаемой» ситуации и потом применять набранный опыт к реальности.(я здесь упрощаю) Вот статья blog.otoro.net/2018/06/09/world-models-experiments
                                                                                Для их обучения нужна база — чем больше, тем лучше — или нет? Если да, тогда это обучение по аналогии, следовательно пример, отсутствующий в базе, нейронная сеть не возьмет.

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

                                                                                  В общем случае — да. Впрочем, чаще (по моим наблюдениям) люди под "обучением" понимают другое, и в этом смысле ни нейронные сети, ни что-либо другое без примеров обучаться не может.


                                                                                  Для их обучения нужна база

                                                                                  Для обучения с учителем — да.


                                                                                  чем больше, тем лучше

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


                                                                                  Если да, тогда это обучение по аналогии,

                                                                                  Не обязательно.


                                                                                  пример, отсутствующий в базе, нейронная сеть не возьмет.

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


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

                                                                                  Что такое "обыкновенные" алгоритмы?


                                                                                  Давайте на примере. Возьмем, опять, задачу классификации, те же ирисы Фишера. Существующие данные — это, если в терминах вашего чатбота "ирис с длиной лепестка 1.4, шириной лепестка 0.2, длиной чашелистика 5.1 и шириной чашелистика — это щетинистый ирис", "4.7, 1.4, 6.1 и 2.9, соответственно — это разноцветный ирис", и так 150 раз. Задача — имея четыре цифры, сказать, к какому из трех классов относится ирис.


                                                                                  Как, по-вашему, такую задачу решают "обыкновенные" алгоритмы, о которых вы пишете? И как, кстати, ее решает ваш "разумный" Ваня?


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

                                                                                    0
                                                                                    Мой Ваня, «разумность» которого Вы упорно закавычиваете, действует следующим образом.
                                                                                    Во-первых, ему нужно объяснить, что «разноцветный ирис» — это идиома, а не просто существительное с определением.
                                                                                    Во-вторых, нужно объяснить, что разноцветный ирис относится к классу ирисов (хотя тут можно и догадаться, по существительному).
                                                                                    В-третьих, о разноцветном ирисе можно высказать разные соображения, но они будут относиться только к разноцветному ирису. А вот если соображения высказать просто об ирисе, они будут отнесены к ирисам всех видов.
                                                                                    Если же, на что Вы намекаете, какие-либо свойства соотнести с конкретным ирисом, сразу вспомнится пример с определением человека и ощипанной курицей. Платон пошутил, не помню уже?
                                                                                      0

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


                                                                                      И да, я в первую очередь спрашивал про "обыкновенные" алгоритмы, с ними как?


                                                                                      (я уж молчу про то, что вы так и не ответили, что такое "пример, отсутствующий в базе")

                                                                                        0
                                                                                        Я уже говорил, что нужно. Обтыкать Ваню датчиками, имитирующими человеческое восприятие, тогда можно говорить о дальнейшем. А пока он чат-бот, и ориентироваться способен исключительно на синтаксис. Если человек способен решить задачу Фишера, то и Ваня окажется способен.
                                                                                        Под «обыкновенными» алгоритмами я разумею НЕ нейронные сети, со всеми ифами, лИстами и прочими прелестями.
                                                                                        Пример, отсутствующий в базе? Ну допустим, вводятся слова, отсутствующие в базе, та же «глокая куздра». Нейронная сеть способна трактовать данную фразу так, как будет трактовать человек? Моему Ване Разумному, при условии что парсер выдаст верную морфологию, до лампочки, что данные слова означают: он легко встроит их в общий контекст. А нейронная сеть? Ответа я не знаю, кстати.
                                                                                          0
                                                                                          Обтыкать Ваню датчиками, имитирующими человеческое восприятие, тогда можно говорить о дальнейшем.

                                                                                          … а зачем? Какое отношение эти датчики имеют к задаче Фишера, если ни один орган восприятия не является для нее необходимым?


                                                                                          Под «обыкновенными» алгоритмами я разумею НЕ нейронные сети, со всеми ифами, лИстами и прочими прелестями.

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


                                                                                          Ну допустим, вводятся слова, отсутствующие в базе, та же «глокая куздра». Нейронная сеть способна трактовать данную фразу так, как будет трактовать человек?

                                                                                          При решении какой задачи?


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


                                                                                          Чего далеко ходить, берем простейшую логистическую регрессию, one-vs-rest, берем из датасета Фишера 112 примеров, обучаем на них. Берем случайный пример из остальных 38 (5.7, 2.5, 5, 2), удостоверяемся, что его нет в обучающей выборке (в датасете 147 уникальных примеров из 150 всего), загоняем в логит, получаем ответ — виргинский ирис.

                                                                                            0
                                                                                            Что нужно нейронной сети, чтобы после ввода информации «Глокая куздра штеко кудланула бокра» сеть смогла ответить на вопрос «Кого кудланула куздра?».
                                                                                              0

                                                                                              Подозреваю, что синтаксический анализатор, морфологический анализатор и набор примеров.


                                                                                              (точнее говоря, два анализатора нужны для того, чтобы составить набор примеров, самой сети они нафиг не сдались)

                                                                                                0
                                                                                                Набор каких примеров? С куздрой?
                                                                                                  0

                                                                                                  Нет, с аналогичными признаками, выделенными анализаторами. Если очень грубо — то "медведь поймал оленя" и "корова родила теленка".

                                                                                                    0

                                                                                                    На самом деле, вру, немного сложнее. Приблизительно так:


                                                                                                    "медведь поймал оленя — кого поймал медведь — оленя"
                                                                                                    "корова родила теленка — кого родила корова — теленка"

                                                                                                0

                                                                                                Вы, кстати, знаете, что на этот вопрос нет единственно верного ответа, да?

                                                                                                  0
                                                                                                  Да, знаю.
                                                                                                  А какое именно обучение должно произойти с нейронной сетью, чтобы в ответ на «Емеля был третьим сыном старика. Его младший брат умер. Сколько сыновей осталось у старика?» получить корректный ответ? Что-нибудь вроде «Теленок был третьим ребенком коровы, двое первых умерло, остался один теленок»?
                                                                                                    0

                                                                                                    Без идей. Но я, с другой стороны, никогда не утверждал, что нейронная сеть мыслит и/или разумна.

                                                                                                      0
                                                                                                      Может, Вы меня неправильно понимаете? Я скорей утверждаю, что не только Ваня Разумный не мыслит, но и человек тоже. Оба они не мыслят или оба мыслят — вопрос терминологии.
                                                                                                        0

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


                                                                                                        Аргументировать это утверждение вы, однако, никак не можете.


                                                                                                        (а утверждение "человек не мыслит" выводит эту дискуссию, вместе с вашим постом, в область откровенного троллинга, и я бы не рекомендовал так делать)

                                                                                                          –1
                                                                                                          1. По поводу своего высказывания я уже сообщил. Если мне кто-то из хабровчан подтвердит, что нейронная сеть способна по фразам «Жучка собака. Собаки лают» определить, что Жучка умеет лаять, я возьму свои слова относительно нейронных сетей обратно.
                                                                                                          2. И по поводу человека говорил. Сама идея создания ИИ наподобие человеческого возможна лишь в том случае, если человек кем-то создан, и создан наподобие машины. В этом смысле термин «мышление» — не прерогатива человека: человек — единица в ряду мыслящих устройств. Если мышление уникально, создать ИИ невозможно в принципе.
                                                                                                            0
                                                                                                            Если мне кто-то из хабровчан подтвердит, что нейронная сеть способна по фразам «Жучка собака. Собаки лают» определить, что Жучка умеет лаять, я возьму свои слова относительно нейронных сетей обратно.

                                                                                                            То есть внезапно определяющим критерием мышления является построение выводов по таким фразам (и, заметим, именно таким, но не более сложным)?


                                                                                                            Сама идея создания ИИ наподобие человеческого

                                                                                                            А откуда внезапно взялось "наподобие человеческого"?


                                                                                                            Если мышление уникально, создать ИИ невозможно в принципе.

                                                                                                            Это, очевидно, не так, потому что уникальные явления поддаются анализу и воссозданию.

                                                                                                              0
                                                                                                              и, заметим, именно таким, но не более сложным

                                                                                                              Я взял простейший случай. Хотя бы таким…
                                                                                                              А откуда внезапно взялось «наподобие человеческого»?

                                                                                                              Разве это не общее поветрие? Да и Вы к тому меня склоняете вроде бы.
                                                                                                              уникальные явления поддаются анализу и воссозданию

                                                                                                              Анализу все поддается, а вот воссозданию — навряд ли, иначе предмет перестанет быть уникальным. Создавая ИИ, мы тем самым признаем, что человеческое мышление не уникально.
                                                                                                                0
                                                                                                                Я взял простейший случай. Хотя бы таким…

                                                                                                                Тут немедленно возникает вопрос "а может ли более сложные случаи Ваня".


                                                                                                                Так все-таки, критерием мышления является именно способность корректно обрабатывать такие фразы, не что-то другое?


                                                                                                                Разве это не общее поветрие?

                                                                                                                Нет. Все люди, которые что-нибудь мне рассказывали или обсуждали со мной про машинное обучение (и, by extension, про искусственный интеллект), ничего не говорили про "наподобие человеческого". Человек там вообще возникает только как тоска отсчета для метрик качества.


                                                                                                                Да и Вы к тому меня склоняете вроде бы.

                                                                                                                Я? Нет.


                                                                                                                Анализу все поддается, а вот воссозданию — навряд ли, иначе предмет перестанет быть уникальным.

                                                                                                                Ну да, перестанет. И что?


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

                                                                                                                Нет, мы признаем, что оно перестало быть уникальным (да и то, только в том случае, если мы создаем человекоподобный ИИ, что не является общим случаем).

                                                                                                                  0
                                                                                                                  критерием мышления является именно способность корректно обрабатывать такие фразы, не что-то другое?

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

                                                                                                                  А со мной говорили.
                                                                                                                  Человек там вообще возникает только как тоска отсчета для метрик качества.

                                                                                                                  Оговорка по Фрейду?

                                                                                                                  Жду от Вас оригинальной версии мышления.
                                                                                                                    0
                                                                                                                    Я приводил свое определение мышления.

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


                                                                                                                    А со мной говорили.

                                                                                                                    На "общее место", однако же, уже не тянет.

                                                                                                                      0
                                                                                                                      Любая система с обратной связью при соблюдении прочих условий. С чего мы и начали.

                                                                                                                      По поводу общего места не понял.
                                                                                                                        0
                                                                                                                        Любая система с обратной связью при соблюдении прочих условий.

                                                                                                                        Которые, как там же описано, выполняются.


                                                                                                                        По поводу общего места не понял.

                                                                                                                        Вы говорили, что "человекоподобные ИИ" — общее поветрие. Как можно видеть — нет, не общее.

                                                                                                                          –1
                                                                                                                          Которые, как там же описано, выполняются.

                                                                                                                          Значит, эти системы с обратной связью — мыслящие.
                                                                                                                          Как можно видеть — нет, не общее.

                                                                                                                          Где можно видеть? Я нигде не вижу. Это Ваше ничем не подкрепленное утверждение. Почему я должен ему верить, если у меня другие данные?

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

                                                                                                                            0
                                                                                                                            Значит, эти системы с обратной связью — мыслящие.

                                                                                                                            Значит, утверждение в посте — неверно вне зависимости от способности нейронных сетей корректно обрабатывать последовательность фраз "Жучка собака. Собаки лают."


                                                                                                                            Почему я должен ему верить, если у меня другие данные?

                                                                                                                            А почему мы должны верить любому вашему утверждению?


                                                                                                                            Слушайте, чего Вы добиваетесь?

                                                                                                                            Чтобы вы перестали делать некорректные утверждения в области, в которой вы — по вашеим же заверениям! — не разбираетесь.

                                                                                                                              –2
                                                                                                                              А почему мы должны верить любому вашему утверждению?

                                                                                                                              Кто Вас просить верить-то? Да не верьте на здоровье.
                                                                                                                              Чтобы вы перестали делать некорректные утверждения в области, в которой вы — по вашеим же заверениям! — не разбираетесь.

                                                                                                                              В каких-то не разбираюсь, а в каких-то очень даже разбираюсь. Про этот термин что-нибудь слышали?
                                                                                                                              ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5
                                                                                                                                0
                                                                                                                                В каких-то не разбираюсь, а в каких-то очень даже разбираюсь.

                                                                                                                                Нас интересуют конкретные: машинное обучение, искусственный интеллект, лингвистика. М?


                                                                                                                                Про этот термин что-нибудь слышали?

                                                                                                                                Слышал. Однако ряд утверждений в вашей статье не выражен как мнения. Если же вы призываете ко всей статье относиться как ко мнению дилетанта… ну ок, да.

                                                                                                                                  –2
                                                                                                                                  Я автор философской системы. Проблема ИИ — смежная с данным вопросом. Еще я профессиональный литератор. Лингвистика — смежная литературе область. Дилетантом в этих областях меня назвать вряд ли возможно. В машинном обучении — да, дилетант.
                                                                                                                                  А Вы, уважаемый? В каких областях Вы крутой специалист, а в каких дилетант? Машинное обучение, ИИ, лингвистика…
                                                                                                                                    0
                                                                                                                                    Дилетантом в этих областях меня назвать вряд ли возможно.

                                                                                                                                    Возможно-возможно. "Смежная область" — это как раз прекрасная почва для дилетантизма.


                                                                                                                                    В каких областях Вы крутой специалист, а в каких дилетант? Машинное обучение, ИИ, лингвистика…

                                                                                                                                    В лингвистике — дилетант. В области машинного обучения (ну и по совместительству — искусственного интелекта, так было в анонсе написано) я сейчас работаю.

                                                                                                                                      –1
                                                                                                                                      А до того, как начали работать в области машинного обучения, были дилетантом или не были?
                                                                                                                                        0

                                                                                                                                        Не был.

                                                                                                                                          –1
                                                                                                                                          Родились специалистом в области машинного обучения? Это у Вас врожденное?
                                                                                                                                            0

                                                                                                                                            (а вы, я смотрю, с определением дилетантизма тоже не очень знакомы)


                                                                                                                                            Да нет, просто пошел учиться.

                                                                                                                                              0
                                                                                                                                              Для Вас дилетантизм равносилен отсутствию диплома?
                                                                                                                                                0

                                                                                                                                                Нет, для меня дилетантизм — это то, что описано в соответствующей статье в википедии.

                                                                                                                                                  –1
                                                                                                                                                  Да и для меня тоже.
                                                                                                                                                  Показательно, что Вы критикуете не достигнутый мной результат, а напрямую не связанное с ним второстепенное высказывание. Из этого я делаю вывод, что Вас совсем не интересуют принципы ИИ, хотя Вы в данной области трудитесь, зато очень интересует толерантность заявлений относительно нейронных сетей. Какие цели Вы при этом преследуете, не знаю, Вам видней.

                                                                                                                                                  На этом дискуссию прекращаю. До следующей моей статьи, видимо…
                                                                                                                                                    0
                                                                                                                                                    Показательно, что Вы критикуете не достигнутый мной результат, а напрямую не связанное с ним второстепенное высказывание.

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


                                                                                                                                                    А в-третьих, про результат мы тоже попробовали поговорить, и выяснилось, что (а) метрик у вас нет и (б) чтобы решить предложенные мной задачи, нужно массив органов чувств, подобный человеческим.


                                                                                                                                                    Не, мне не сложно, давайте попробуем еще раз. Вот есть простенькая задачка:


                                                                                                                                                    — Ваня, на улице жарко?
                                                                                                                                                    — Не знаю.
                                                                                                                                                    — Какая температура на улице? [заметим, что для ответа на этот вопрос не нужно органов чувств, это типовой пример из любого современного conversational assistant, поэтому я даже не спрашиваю, можно ли это сделать — очевидно, что можно]
                                                                                                                                                    — +23
                                                                                                                                                    — +23 — это жарко [пойдем по простому варианту, без омиссий и контекстных знаний]
                                                                                                                                                    — Запомнил


                                                                                                                                                    [Следующий день, за окном +23]
                                                                                                                                                    — Ваня, жарко ли на улице?


                                                                                                                                                    Каков будет ответ и почему? (я сразу оговорюсь, что это не конец сценария, но надо начинать с простых шагов)


                                                                                                                                                    я делаю вывод, что Вас совсем не интересуют принципы ИИ

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

                                                                                                              +1
                                                                                                              из хабровчан подтвердит, что нейронная сеть способна по фразам «Жучка собака. Собаки лают» определить, что Жучка умеет лаять, я возьму свои слова относительно нейронных сетей обратно.

                                                                                                              1. Т.к. эта задача доступна обычным алгоритмам, и так как доказано, что как минимум некоторые архитектуры нейросетей экваивалентны универсальной машине Тьюринга, то очевидно, что можно создать теоретически нейросеть способную к этому.
                                                                                                              2. Есть эксперименты по обучению нейросетей отвечать на вопросы по содержванию текстов книг. Вот, например, arxiv.org/abs/1603.08884v1
                                                                                                              Думаю это близко к вашему вопросу.
                                                                                                                0
                                                                                                                Спасибо, беру свои слова обратно.
                                                                                                                Если нейронную сеть использовать правильно, она вполне способна стать инструментом для создания ИИ.
                                                                                            +1

                                                                                            … кстати, вот и прекрасный ответ на ваш вопрос "зачем [использовать нейронные сети], если подобное достижимо без всяких нейронных сетей?" — затем, что с помощью "обычного машинного обучения" задача классификации ирисов Фишера решается без необходимости объяснять таксономию ирисов, вводить понятие идиомы (которой, кстати, "разноцветный ирис" не является) и обвешивать кучей датчиков, имитирующих человеческое восприятие.

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

                                                                                                Я выше показывал, как. Или вам код нужен?


                                                                                                Этак ваша нейронная сеть начнет толковать фразу «Усталый Вася надел тапочки» как: Все усталые люди надевают тапочки, или: Признаком усталости являются надетые тапочки.

                                                                                                Нет, почему бы?


                                                                                                Не, разноцветный ирис — это идиома, такая же как индийский слон.

                                                                                                Я боюсь, что ваше понятие идиомы отличается от общепринятого.

                                                                                                  0
                                                                                                  Да, отличается.
                                                                                                  Нет, почему бы?

                                                                                                  Потому что усталый Вася — это субъект с определением. Вася запросто может стать не усталым, а индийский слон не станет африканским даже в том случае, если его поселить в Африке. Поэтому индийский слон — неделимый оборот, то есть идиома. Хотя лингвисты, возможно, и пользуются другим термином, не знаю.
                                                                                                    0
                                                                                                    Да, отличается.

                                                                                                    Ну вот опять. Понятие мышления у вас отличается, понятие идиомы — тоже. И зачем только люди придумывают терминологические системы?


                                                                                                    Потому что усталый Вася — это субъект с определением.

                                                                                                    Вот только это не ответ на вопрос "почему нейронная сеть начнет именно так толковать фразу".

                                                                                                      0
                                                                                                      И зачем только люди придумывают терминологические системы?

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

                                                                                                      Я не специалист по нейронным сетям. Это вам отвечать, каким образом нейронная сеть начнет толковать «эту фразу».
                                                                                                        0
                                                                                                        Для удобства, наверное.

                                                                                                        Нет, чтобы можно было обсуждать что-то, используя одинаковую (и непротиворечивую) терминологию.


                                                                                                        Я не специалист по нейронным сетям

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

                                                                                                          0
                                                                                                          Нет, чтобы можно было обсуждать что-то, используя одинаковую (и непротиворечивую) терминологию.

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

                                                                                                          Вы меня сами вынуждаете к подобным заявлениям. Скажите, как — я во всяком случае прислушаюсь к Вашему мнению.
                                                                                                            +1
                                                                                                            Если обнаруживаются противоречия или терминологию становится неудобно использовать из-за неполноты,

                                                                                                            Вы нашли противоречия или неполноту в лингвистическом понятийном аппарате?


                                                                                                            Вы меня сами вынуждаете к подобным заявлениям.

                                                                                                            Нет, не вынуждаю. Вы их делаете исключительно по собственной воле для доказательства своей — и, как уже выяснилось, неправильной — точки зрения.


                                                                                                            Скажите, как

                                                                                                            Так, как будет обучена.

                              0
                              Несмотря ни на что, Ваня действительно мыслит,

                              Какое именно обучение должно произойти с "Ваней мыслящим", чтобы в ответ на "Емеля был третьим сыном старика. Его младший брат умер. Сколько сыновей осталось у старика?" получить корректный ответ?

                                +1
                                Никакого. Корректный ответ в Вашем примере невозможен в принципе, так как отсутствует информация, сколько детей было у старика всего. Может, у него было четверо или пятеро детей?
                                Если человек не в силах корректно сформулировать вопрос, можно ли требовать корректного ответа от чат-бота?
                                  +1
                                  Корректный ответ в Вашем примере невозможен в принципе

                                  Да здрасьте. Легко и непринужденно: "не меньше одного, если Емеля все еще жив".


                                  Но в данном конкретном случае можно дать и полную информацию, это не отменит моего вопроса.

                                    0
                                    Ладно, отвечаю полно. Обучить ИИ ответу на такой вопрос можно, если приделать к нему датчики, аналогичные человеческим органам чувств, и воспитывать в физическом мире вместе с людьми. В синтаксисе задания ответа на данный вопрос не содержится.
                                      0

                                      Получается, ваш "ИИ" не умеет понимать смысл, только синтаксис. Такое вот "мышление".

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

                                          … но при этом вы утверждаете, что ваш "Ваня Разумный" мыслит, хотя я вот считаю, что мышление без понимания смысла невозможно (а синтаксис понимает и компилятор).


                                          либо главная мысль Вам глубоко несимпатична.

                                          Эта мысль, очевидно, недоказуема (равно как и неопровергаема), поэтому неинтересна в аргументированной дискуссии.

                                            0
                                            мышление без понимания смысла невозможно

                                            Еще как возможно! Потому что мышление — это не объекты (дерево, дом, человек), а связи между элементарными и ничего не значащими элементами (цветными точками). Для чат-бота элементарный объект — буква. Очевидно, что сама буква не обладает никаким смыслом сама по себе, смысл возникает для связки из нескольких букв, образующих слово. Которое в свою очередь тоже мало что означает, а обретает смысл лишь в связке с другими словами, обладающими определенными морфологическими признаками.
                                            Эта мысль, очевидно, недоказуема (равно как и неопровергаема), поэтому неинтересна в аргументированной дискуссии.

                                            Я не смогу ее доказать, но ведь Вам-то известно, как оно обстоит на самом деле!
                                              0
                                              Потому что мышление — это не объекты (дерево, дом, человек), а связи между элементарными и ничего не значащими элементами (цветными точками).

                                              Не всякая связь является мышлением; те же, которые мышлением являются, как раз и являются "смыслом".


                                              Вам-то известно, как оно обстоит на самом деле!

                                              Нет, мне известно, как оно обстоит в принятой мной картине мира, и, что характерно, это не так, как вы описываете.

                                                –1
                                                Видимо, я пользуюсь другой картиной мира. Сожалею.
                                              0
                                              Увы, в этом раунде mikejum прав: мышление без понимания смысла возможно — это абстрактное мышление (оно же «абстрактно-логическое мышление»). Вы не видели чисел 1 и 2 (только их реализации, если вы не слепой, которые тоже умеют решать задачи на сложения), не знаете, что такое «х», вы не видели бесконечную прямую линию, но вы способны запомнить, что 1+1=2 и sqrt(x^2) == abs(x), и что если на линии поставить точку, то бесконечные половинки будут называться «луч», и что тесть троюродного брата — скорее всего вам не родственник, даже если у вас нет брата и тестя.
                                              Только нужно помнить, что логики абстрактного мышления бывают разные: аристотелева, женская, темпоральная.
                                              У автора в логике константы и три отношения: classOf («класс-подкласс»), instanceOf («класс-объект») и causeOf (причина-следствие).
                                              Его система вполне рабочая, но весьма ограниченная. При попытке существенно расширить её (добавив темпоральность, вероятность или оба понятия) возникнут серьёзные вычислительные проблемы.
                                              Но в таком виде, как демонстрация некоторых принципов интеллекта, она вполне годится. Кстати, напоминает детское мышление.
                                              А если поглубже копнуть в теорию систем для логического вывода, то вопрос хорошо обсуждаются здесь:
                                              www.lektorium.tv/course/22781
                                              и, конечно же, если хочется популярно про отличия различных логических систем, то читать здесь:
                                              wikimipt.org/wiki/%D0%97%D0%B0%D0%BC%D0%B5%D1%82%D0%BA%D0%B8_%D0%BE_%D0%B6%D0%B5%D0%BD%D1%81%D0%BA%D0%BE%D0%B9_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B5
                                              А про существенное развитие системы для парсинга человеческого языка читать в PDF: «Тузов В.А. Компьютерная семантика русского языка» (и другие работы его авторства по этой теме).
                                                0
                                                Вы не видели чисел 1 и 2 (только их реализации, если вы не слепой, которые тоже умеют решать задачи на сложения), не знаете, что такое «х», вы не видели бесконечную прямую линию, но вы способны запомнить, что 1+1=2 и sqrt(x^2) == abs(x), и что если на линии поставить точку, то бесконечные половинки будут называться «луч», и что тесть троюродного брата — скорее всего вам не родственник, даже если у вас нет брата и тестя.

                                                Подождите, но при чем тут "без понимания смысла"? Я понимаю смысл всего описанного выше.

                                                  0
                                                  Правда? И какой же смысл у числа 1? И что означает то, что вы говорите, что вы его «понимаете»?
                                                    0

                                                    "Число, обозначающее единственный предмет; a unit". Ну и дальше набор характеристик.

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

                                                        Йеп. И так пока не дойдем до неопределимого базового понятия.


                                                        Может, в понимании смысла есть что-то ещё? Например, представление об успешности синтаксического парсинга данного предложения?

                                                        Это не "что-то еще", это "что-то меньшее".


                                                        Будет ли «расчёт силлогизма» мышлением на ваш взгляд

                                                        Нет. "Расчет силлогизма" ничем не отличается от "логического и" в программе, но никто не говорит, что программа мыслит.


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

                                                        Да-да, именно поэтому и не будет.

                                                          0
                                                          >Нет. «Расчет силлогизма» ничем не отличается от «логического и» в программе, но никто не говорит, что программа мыслит.
                                                          Оу, а если я так сказал, то я «никто»?
                                                          Смотрите, возьмём даже википедию: «Мышле́ние — это познавательная деятельность (человека)… Результатом мышления является мысль (понятие, смысл, идея).»
                                                          Значит, если новое умозаключение появилось, значит, кто-то только что «помыслил», правильно? И этим «кто-то» был Альберт Энштейн компьютер.
                                                          Вот люди говорят «гугл нашёл». Но ведь гугл — не может «искать» по аналогичным причинам, он ведь компьютерная программа.
                                                          С очеловечиванием разобрались, теперь разберёмся с делимостью.
                                                          Я считаю, что каждая часть мышления — тоже мышление, а не только всё явление в совокупности. Вы можете со мной не соглашаться, конечно, ведь это плохо определённый людьми термин.
                                                            0
                                                            Оу, а если я так сказал, то я «никто»?

                                                            Нет, это я сделал некорректное обобщение.


                                                            И этим «кто-то» был компьютер.

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


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

                                                            Именно так. Тут (а так же в одном из соседних постов) уже был по этому поводу спор, и результат его все тот же: чем утверждать, что программа "мыслит", лучше говорить о конкретных характеристиках, которые она демонстрирует, это продуктивнее.

                                            0
                                            Но ведь «понимать смысл» это и есть чисто синтаксическая задача, т.е. умение правильным образом выстраивать правильно подобранные слова.
                                              +1

                                              Совсем нет.


                                              Во-первых, вы говорите ("умение правильным образом выстраивать правильно подобранные слова") о генеративной задаче — то есть выдать пользователю правильный ответ. Например: "что ты видишь на картинке". Задача синтаксиса в этом случае — дать ответ "я вижу двух котов", а не "кот: 2". Но синтаксис никак не поможет выбрать между "я вижу кота" и "я вижу собаку".


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

                                                0
                                                Я почему-то подумал, что синтаксис включает в себя морфологию, и что фраза «кот это коробка на колёсах» неверна синтаксически, а не морфологически. Мой фейл.

                                                Хотя, в принципе, если постараться, то можно натянуть сову на глобус и свести всё к синтаксису. Наверное. Но не хочется этим тут заниматься.
                                                  0

                                                  Эта фраза морфологически полностью верна. Морфология не имеет никакого отношения к смыслу слов.


                                                  (собственно, с точки зрения языкового формализма в этой фразе есть только одна ошибка, и это пунктуация)

                                                    +1
                                                    Дабл фейспалм. Не морфологию, а семантику.

                                                    Хреновый из меня бот(((
                                          0
                                          «Емеля был третьим сыном старика.» наталкивает на мысль что Емеля тоже умер. А корректный ответ «на одного меньше» что не дает никакой полезной информации.
                                            0
                                            «Емеля был третьим сыном старика.» наталкивает на мысль что Емеля тоже умер

                                            Не обязательно. Действие происходит в прошлом, вопрос тоже может к нему относиться.


                                            А корректный ответ «на одного меньше» что не дает никакой полезной информации.

                                            Ну, требование про полезность информации пока вообще особо не всплывало, мы только о корректности говорили.

                                      0
                                      Все современные методы создания ИИ (и ваш не исключение), это подгонка результатов.
                                      Реальное мышление состоит из множества конкурентных процессов, каждый из которых состоит из множества конкурентных процессов.
                                      И моделировать соответственно нужно не исходя из абстракций придуманных человеком. А исходя из первичных элементов.
                                      И чем наше хваленое человеческое мышление отличается от заурядных машинных алгоритмов?! Ничем.

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

                                          А вот «барабанный магазин» внезапно оказывается совершенно не тем магазином, в котором торгуют барабанами.

                                          > Возьмем для примера диалог:
                                          > — Петров, как здоровье?
                                          > — Нормальное.
                                          > — А у жены?
                                          > — Тоже.

                                          А сможет ли ИИ разобрать такой диалог:

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

                                              Если вернуться к примеру «Вася устал и надел тапочки», бот может поинтересоваться «вы устали? нет. (вы не вася, а петя) Вы не в тапочках? В тапочках. Почему? Я дома.» Таким образом, человек в тапочках получается или Вася, или устал или дома! По мере наработки базы, сила правильных связей будет расти, а ошибочные связи — отпадать. Я конечно представляю себе комбинаторный взрыв будет на тему, хранить к каждому понятию еще и веса ко всем другим понятиям (ну не ко всем, пусть к единожды использованным). А потому, чат-бот должен уметь забывать. То, к чему нет давно обращений и мало внутренних ссылок, может быть удалено и дефрагментировано (если это не снабжено неким префиксом, из серии «помни — человек царь природы!»).
                                                0
                                                Небольшое уточнение: различия между сеансами связи имеются, чат-бот запоминает, кто и что сказал.
                                                С остальным полностью согласен. Да, приблизительно так и нужно делать, напрашивается.
                                            0
                                            Крутая штука — порадовали. Сам такую делаю, рад что есть единомышленники. На heroku валяется, но я не стал осмеливаться замахиваться на все богатство человеческого общения. Мне кажется это очень годная вещь для ограниченного синтаксиса. Например ии-кадровик, ии-продавец и т.п. Тогда количество входных данных сильно уменьшается и становится проще анализировать. Ваще странно, что вы в БД уперлись. я мож ничо не понял у меня задачи объемней но не куда не упирается даже на слабом ноутбуке.
                                              0
                                              Спасибо на добром слове. Что касается БД, то оптимизировал, оптимизировал, все равно — либо слишком много обращений, либо слишком мало материала для анализа. Хотя есть что еще оптимизировать, это да.
                                                0
                                                Да не парьтесь вы с оптимизацией. Ну подтупливает. Если вы выложите куда-нить в открытый доступ, найдется добрая душа, вам за пару часов если не оптимизирует, то расскажет как это быстро сделать. Я б помог, но я java-js.
                                                  0
                                                  Кажется, это Сальвадор Дали сказал: Не стремись к совершенству, ты все равно его не достигнешь.
                                              0
                                              Спасибо за статью, несколько лет назад у меня некое подобие было, только с транспортом на вк, телеграм и смс. Но я делал сперва систему уведомлений разными каналами смс+вк+телеграм. А потом развлечения ради привязал ответ на некоторые вопросы по маске (что-то типа регулярок), придумывал алгоритмы случайности и поиска максимальной схожести.
                                              Но сейчас планирую чисто по фану запилить морфологический анализатор и как-то его гонять через открытые источники общения людей. Но пока всё в планах…
                                                0
                                                Да пожалуйста.
                                                Только вот с библиотеками и словарями беда. Когда начинал, убедился: использовал, что смог. Хотя вот, в комментариях подсказали, где искать…
                                                  0
                                                  Доработать толковые словари — вообще не сложно. Загнать в вики-проект пусть сообщество правит. По трудозатратам это меньше чем перевод книги. Суперкомпьютер так же можно построить хоть дома, пусть он будет и не из ТОП500, но боту может хватить.
                                                    0
                                                    Ну не знаю… Сообщество может и проигнорировать проект.
                                                      0
                                                      Вики-проектные толковые словари издавна дорабатываются/правятся (например — 1, 2).
                                                  0
                                                  Программа обучается если с ней разговаривать? И если да, то можно образчик сего творения. Поболтать, пострадать фигней.
                                                    0
                                                    Ссылки в статье приведены.
                                                    0

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

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

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

                                                          0

                                                          Ну и конечно под всем этим поднимается вопрос "воли". А зачем, мотивация, в чем смысл/направление алгоритму проводить собственные внутренние изыскания, суждения. Ведь все же человек пытается осмыслить, осознать, разуметь когда у него появляется в этом потребность, его что то неустраивает. Зачем что то искать и как это заложить ИИ. Ведь По сути программа и машина выдают тот результат, который в нее заложили… Сразу скажу, что вопрос по нейронным сетям еще не дома конца изучен, чтобы утверждать, что они самимм способны постигать за счет обучения.

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

                                                        Я как (бывший) лингвист как раз не сторонник следования нейронкам и др., но нельзя не признать, что есть ряд вещей, с которыми они справляются лучше.

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

                                                            Это, очевидно, не так. У него еще есть (как минимум) предыдущий опыт.


                                                            Не совсем понял, что вы имеете в виду под цифрами перфоманса.

                                                            Эээ, вы это серьезно? Вы не знаете, что задачи машинного обучения не имеют смысла в отрыве от метрик качества (решения этой задачи)?

                                                              –1
                                                              Вы всегда в чужие разговоры вклиниваетесь? У нас с вами своих веток более чем достаточно.