А давайте закончим с постановкой вопросов. Поломаем наш странный квест, формируемый лабиринтом уже вышедших статей этой серии. Теперь время статьи с ответом. Да, это немного вызов себе. Но это необходимо. Пора оставить вопросительные знаки и сомнения. Здесь место только точкам, а используемые многоточия лишь способ остаться в рамках запланированного объема.
Под катом в софитах предстанет Философия. Но не она сама, а скорее анализ её ключевых и по совместительству языковых недостатков. Да, за последние лет тридцать в буме технологических прорывов мы немного об этом позабыли, но Философия всё та же. Она наш языковой авангард в великой войне с непознанным. И в этой войне, наконец, найден способ установить мир. Примирение стало возможно благодаря формализации познания. И хотя эта формализация отнюдь не проста, но прост её краеугольный камень.
Да, Философский камень найден!
И им оказался Алгоритм.
Далее много перегруженных предложений и несколько рисованных иллюстраций.
Задача
Мысль изреченная есть ложь.
Ф.И. Тютчев. Silentium!
И в полном согласии с высказыванием Тютчева восторженная реклама, "изреченная" над катом — почти обман… Обозначенный там философский камень совсем не подарок нам вечной жизни, а вместо того — сложный предмет размышления. И текущая статья — это ответ, но и суровая работа, лишь немного сдобренная в меру скромных умений иллюстрациями. И все потому, что единственный способ овладеть "волшебством" знания — это труд нашей мысли.
Давайте взглянем на заявленную тему. В этот раз тема — Философия. И, как это ни странно, наш разговор прежде всего о другом. Он о естественном языке. И необходимость обсуждения философии — это планомерное развитие темы предыдущей статьи, в которой мы разобрали развитие алгоритмов поведения человека, послуживших зарождению коммуникации и ключевого её алгоритма — "Именования". Этот алгоритм — способ находить и впоследствии использовать уникальный символ, комплементарно сопоставленный со сформировавшимся признаком, детектируемым человеком и характеризующим некоторую важную в поведении ситуацию.
Если именование выполняется для некоторого объекта среды, для качества этого объекта или для процесса с его участием, то полученные именованием слова утилитарны. И в совместной коммуникации достаточно легко применить их для синтеза полезного алгоритма поведения, использующего поименованное.
Но вместе с этим именование может быть иным. Если применить его к физиологическим и эмоциональным состояниям человека или к социальным состояниям и общественным взаимодействиям, то в результате тоже получим слово. Но слово будет "трудным". "Трудность" таких имен прежде всего в сложности сформировать у нескольких человек тождественный классифицирующий смысл (в терминах предыдущей статьи). Так, например, слова: "модно", "тренд сезона", "культовый" — для людей из разных субкультур обречены обозначать разные социальные состояния и имеют в составе отличающиеся классифицирующие признаки. Это связано с разным контекстом, в котором говорятся такие слова. Но пик "трудности" мы увидим в другом наборе слов. И именно вокруг этой группы слов все мысли философов.
Давайте вспомним самые сложные: "хорошо", "плохо", "справедливость", "любовь", "свобода", "жизнь", "бог"… Недаром, Сократ в многочисленных спорах, непреклонно ведших его к цикуте, практиковался в доказательстве своим экспертам-оппонентам, что они не знают до конца употребляемых ими понятий, а потому не имеют права этими понятиями пользоваться. Он доказывал это другим, но и про себя констатировал: "Я знаю, что ничего не знаю". И даже если авторство этой фразы под сомнением, нет сомнений, что в споре и размышлении с нечеткими понятиями невозможно добиться однозначно трактуемых результатов. А что есть философия как ни спор и размышление о трудно формализуемом.
Фундамент философии
Спор на естественном языке во многих ситуациях обречен стать бесполезной тратой времени. И только частично "Плоский мир" бесполезности метафизических споров зиждется на слоне "трудных слов". Другим держащим "Мир философии" слоном является сложность композиции на естественном языке нескольких верных (ну, или принимаемых всеми участниками спора) высказываний в новое высказывание, которое будет хотя бы не бессмысленным. Способы такого синтеза верных высказываний зародилось там же. Их корни в философских спорах. Ярким, но несколько "археологическим" примером этих способов являются, например, силлогизмы Аристотеля, представляющие собой рабочий вариант универсальных правил трансформаций верных высказываний на естественном языке.
Но двух слонов недостаточно. Чтобы удержать мир необходим и третий! И им является унаследованная от еще несловесных приемов синтеза поведения способность человека к алгоритмическому переносу. Такому как в примере "коровы — камешки" в статье этой серии, посвященной математике. Да, это один из примеров доязыкового мышления человека. Зигмунд Фрейд назовет это мышление "бессознательным". Имануил Кант отнесёт такие способы к "аналитическому суждению", используя это как врожденное чувство, например, пространства для словесного доказательства существования внешнего мира. Слово "доказательство" не совсем подходит для выполненных им мысленных построений. Но это упражнение мысли понадобилось не просто так. Это был ответ другим философам, использующим тот же мир слов для анализа своего существования и утверждавшим, например, что невозможно предоставить доказательства существования внешнего мира (Дэвид Юм), или в качестве отправной точки своих суждений формулирующих: "Я мыслю, следовательно, я существую" (Рене Декарт).
Многочисленные вариации философской мысли показывают сколь тернист был путь развития способов человека использовать слова для "познания мира". Бо́льшими успехами в познании окружающего могли похвастаться "менее словесные" специализации философии, например, физика, которая в поиске максимально простых и работающих объяснений явлений среды была вынуждена проверять на практике генерируемые человеком словесные конструкции. Так было, например, с развитием философских представлений о центре обращения "небесных сфер".
Эволюция физической научной мысли с добавлением необходимости согласования с экспериментами становится явственно более эффективным методом синтеза знаний. В терминах "Общей теории алгоритмов" этот усовершенствованный синтез легко переносится и изоморфен повышению эффективности развития программного проекта с налаженной системой тестов. Но вне программной прикладной области в естественном языке для таких слов как "хорошо" или "свобода" очень тяжело придумать набор тестов, а результат тестирования из своей субъективности не будет распространяем на все случаи применения. "Диалектика!" — сказал бы Гегель. И, конечно, был бы прав. Но мало одного только указания, что в некотором обсуждаемом вопросе нет исключительной полярности "истина-ложь", а есть наличие промежуточных вариантов. Предложенный им способ анализа высказываний в замену метафизического стал великим прорывом в пути к формализации философского мышления, который зафиксировал наличие диалектичности в наших утверждениях. Но эта констатация еще не "работающее объяснение" как в физических законах.
Тут нам необходимо отступить от рассмотрения истории упражнений в словесном анализе сущего и вернуться к естественному языку и алгоритмическому переносу, укоренившемуся в нём. Давайте вспомним любимые приемы, используемые творцами художественных текстов и знакомые почти всем из уроков литературы. Нас интересуют метафора и олицетворение. Это же близнецы нашего знакомого! Они — схваченный в структуре текста алгоритмический перенос. Для олицетворения это перенос человеческих алгоритмов поведения на процессы, протекающие в природе.
Олицетворение — это литературное название нашему третьему слону, невольно поддерживающему философию.
Итак, три слона обозначены ("трудные" слова, способы логического вывода и олицетворение), а черепаха, плывущая в океане — это неискоренимое внутреннее стремление человека находить, создавать и использовать стратегии, сохраняющие его жизнь.
Интерполяция и закономерность
Гремит гром, и искры в небе. Древнему философу страшно и непонятно, а внутри живёт стремление понять закономерность (найти "действие" согласно терминам первой статьи серии) и использовать её в построении алгоритмов выживания. Если до этого викинг-философ в сражении испытал хоть раз удар вражеского молота по своему шлему, то в громе и молнии он обнаружит некоторые сходные признаки. Объяснение выявляемому сходству простое. Удар по голове, защищенной металлическим шлемом, кроме оглушающего звука сопровождается вполне реальным визуальным эффектом в работе нашей сетчатки, проявляющимся после механического воздействия ("искры из глаз"). Так обнаружение совокупности признаков, привязанных к громкому звуку, может стать базой алгоритмического переноса. Используя эту базу абстрактных признаков, можно перенести алгоритм с их участием, пытаясь применить уже накопленный опыт. И этот опыт, переносясь по указанным признакам, позволяет представить на небе "человека с молотом", что определенно имеет смысл, если у тебя в наличии есть только алгоритмы взаимодействия с людьми, а алгоритмы взаимодействия с грозой отсутствуют. Один из проверенных жизненных алгоритмов: "Человека можно задобрить или отвлечь". После переноса получаем: "Небесного человека с молотом можно попробовать по-человечески задобрить или отвлечь".
В результате сходной последовательности переносов в истории человечества появилось превеликое множество подобных алгоритмов "выживания". Теперь мы понимаем, что они были весьма наивны. Но это не мешает нам использовать подобные им стратегии даже сегодня. Характерно, что они все длительное время используются людьми, хотя работают, конечно, неудовлетворительно.
Такие примеры "выживания" неэффективного алгоритма поведения в исторической перспективе — очень важный процесс в алгоритмическом мире. Он — свидетельство странному на первый взгляд образцу естественного отбора, который, как это ни удивительно, присущ не только биологическим видам, в деталях демонстрирующим способ алгоритмического развития, научно зафиксированного в биологической прикладной области Ч.Дарвином. Согласно этому образцу, вскрывающему глубокую и общую закономерность, направлением естественного отбора с алгоритмической точки зрения является результат соперничества эффективности и "сохранимости". То есть в отборе стратегий поведения сохраняются не только эффективные способы выживания, но и неэффективные, если те исторически устойчивы, то есть успешно сохраняются между поколениями. Здесь в качестве иллюстрации аналогии можно упомянуть пример биологического эквивалента такого неэффективного алгоритма, которым в выживании вида является павлиний хвост.
Давайте вернемся к разбору особенностей синтеза и сохранения неэффективных стратегий в прикладной области человеческих стратегий.
В поведении человека проявляется один важный спецэффект сознания, характеризующий один из основных способов синтеза стратегии поведения. Этот способ стимулирует стремление человека выявлять повторимости последовательности значимых действий и состояний. Этот способ виновен в том, что до сих пор "выживают" наши приметы, суеверия и гороскопы. Этот же способ объясняет и существование "Систематической ошибки выжившего". Но, конечно, этот способ не бесполезен. Главная его миссия закончилась более чем успешно. Он помог человеку стать "властелином" алгоритмического мира. Но в его основе изначально есть предпосылки для "побочных эффектов".
Давайте разберём структуру этого способа на примере "небесного человека с молотом". Синтез алгоритмов поведения с поклонением богу молота (будем достаточно условно называть его одним из исторических вариантов — Тор) состоит из алгоритмического переноса и интерполяционного способа синтеза, используемого человеком. Перенос уже почти расписан. В нём на основе схожести по признаку "удары молотом" на небо поселяется Тор, Перун, Зевс .... На основе этого признака можно попробовать перенести алгоритмы, работающие на знакомых сердитых людях, использующих боевые молоты. У меня сейчас мало таких знакомых, но думаю у викингов их было достаточно. А у греков были сердитые воины со стрелами. Чтобы сердитый воин не размахивал своим молотом, его можно отвлечь едой и задобрить разными ценностями. Осталось придумать какие дары по вкусу гневающемуся "громовержцу", выполнить доставку на небо и проверить действенность задабривания. Как раз с последним пунктом у человека проблемы. Рассмотрим в чем её суть на примере, выяснив какие ситуации порождают исторически устойчивую стратегию поведения.
Первая ситуация является порождающей и обеспечивает стимуляцию поиска новой стратегии поведения. Человек, который попал в шторм с грозой, но выжил, будет думать, что стало причиной. Попробует найти закономерность, придумает Тора, объяснит грозу и шторм вздорным характером или рассерженностью божества. А страх, испытанный от грома и молний, заставит искать способы избежать повторения этого опыта.
Вторая ситуация является главной последовательностью, обеспечивающей запоминающую интерполяцию стратегии поведения. Она как раз про "систематическую ошибку выжившего": человек, который принёс жертву или дар очеловеченному грому и в результате избежал грозы в морском путешествии, хорошо запомнит эту последовательность яркого действия и значимого результата как важную закономерность — основу своей новой стратегии. Причём чем ярче способ дарения, тем лучше запомнится эта "важная" связь. И эта яркость — простое объяснение затейливости всех наших обрядов.
Третья ситуация при наличии корректно сформированного "действия" могла бы ликвидировать "странную" стратегию одаривания невидимого персонажа. Но боги не удостаивают нас поясняющим общением. И потому человек, который принес дары идолу и потом попал в грозу, но все же выжил, из непонятности полученной ситуации не выносит ничего, кроме подтверждения сложного характера своего божества (очередной перенос из алгоритмов человеческого поведения).
Четвертая ситуация не содержит побуждения к созданию стратегии выживания, а существующие стратегии останутся после неё нетронуты потому, что оценка эффективности стратегий сложная сознательная надстройка в алгоритмическом творчестве человека. В то время как описываемый бессознательный способ исполняется автоматически. Поэтому человек, который не принес жертву и остался жив после морского путешествия не запомнит ничего яркого, и потому никак не изменит множества стратегий своего выживания.
Остались безрезультатные ситуации. И они все про человека, который гибнет в бушующей морской пучине. Такой человек не оставит своего опыта потомкам. Стратегия поведения с совершением дарения, предваряющим смерть дарящего, родившись, сразу умирает вместе с этим человеком. А переоценка существующих стратегий другими людьми на основе таких ситуаций возможна, но это тема отдельного и сложного разговора об оптимизации алгоритмической системы и сложности использования отрицательного опыта в обучении. Обсуждение этих алгоритмических процессов необходимо, но будет выполнено чуть позже и вне рассмотрения базового уровня интерполяции алгоритма, ставшего основой мышления человека и до сих пор являющегося его рабочим инструментом жизни.
Это была не очень краткая и целенаправленно усиленная смертельным исходом иллюстрация способа бессознательного создания алгоритма (стратегии выживания) на основе запоминания последовательности пережитых событий и действий. Построенная в этом примере стратегия не является самой эффективной и даже полезной, но таким же способом строится и большинство действительно необходимых человеку стратегий. Ведь рассмотренный способ — лишь продвинутый наследник распределенного во времени условного рефлекса. А "побочные эффекты" в этом примере — свидетельство изъянов в интуитивных (бессознательных) переносах, используемых в синтезе человеком алгоритмов, а еще в частом отсутствии анализа эффективности получаемых стратегий. Эти изъяны позволяют зародиться и выживать стратегиям, которые опираются на такие признаки как "Чёрный кот" или "Теория заговора". Создание таких стратегий в самой человеческой природе. Но это никак не может считаться доказательством корректности выявляемых таким способом закономерностей. А в силу использования подобных закономерностей в большой части философских доказательств на эти творения человеческого ума сейчас сложно смотреть без улыбки. Да, критический анализ используемых человеком стратегий совсем не нов, и хороший тому пример — пари Блеза Паскаля. Но есть и более рациональные, чем размышления Паскаля, способы оценки и даже отказа от использования опоры на "очеловечивание" процессов. Ведь молния и гром — теперь имеют объяснение, не нуждающееся в изучении характера "небесного человека с молотом".
Работающие объяснения
Рассмотрению сложных процессов, объясняемых переносом человеческого поведения, можно посвятить отдельную развлекательную статью. Но общий принцип уже виден. Физика описала процессы электричества фактами, не нуждавшимися в персонаже Тор, и в результате алгоритмы использования электрического тока стали действительно полезными не в пример идолопоклонничеству. Ч.Дарвин описал процессы развития в животном мире, которые не нуждались во внешнем вмешательстве чей-то воли и плана, и кроме способов красочного описания создания мира человеку стали доступны алгоритмы использования функционального управления сельскохозяйственной селекцией.
Но есть единственная область процессов, где перенос человеческого поведения не может дать даже мнимого пояснения происходящего. И эта область — сами процессы человеческого поведения и мышления. В текущее время все более актуальными становятся задачи использования этих процессов. А для того необходимы их структурные научные описания. И хорошей подсказкой, полученной в анализе найденной и указанной выше закономерности изучения сложных процессов, становится отказ от внешнего контроля этих процессов человекоподобной сущностью, а вместо этого сосредоточение на поиске характерной совокупности процессов, которые своим взаимодействием формируют наблюдаемое человеческое поведение.
На основе рассмотренного примера мы также можем отметить, что в формулировании описания процессов мышления необходимо быть крайне осторожными и никогда не ограничиваться только словесными построениями. Необходима проверка каждой разработанной в естественном языке структуры на практическом примере (получение эмпирических доказательств по Аристотелю), и лучше если это будет множество примеров оценивающих эффективность синтезированного. На основе такой осторожности и ликвидации несостоятельных закономерностей алхимия трансформировалась в химию, из части астрологии была "кристаллизована" астрономия, из философских размышлений, ограниченных формально и проверяемых практически, создана вся существующая наука.
Итак, оставшаяся неформализованной часть философии опирается на человеческое поведение, мышление и касается границ познаваемости мира. Достаточно удивительно, но все эти процессы объясняются достаточно простыми законами присущими алгоритмическому пространству, в котором мы существуем. И повсеместность использования этих алгоритмических законов в живом мире позволяет выявить их в одной прикладной области и использовать для объяснения процессов в другой. Это обосновывает целесообразность совместного изучения таких разных областей, как выживание биологического вида, изоморфного и выживанию стратегии поведения человека, и сохранению гена, и существованию мема в интернете (в терминах Ричарда Докинза), и представленности программного продукта на рынке.
Но мало на основе этих переносов между прикладными областями сказать: "Алгоритм — это способ изучения".
Эта фраза останется последовательностью слов и иногда исторически устойчивой системой верований, но никак не поможет синтезировать на её основе полезный алгоритм. Чтобы добавить смысла этой фразе, вернемся к алгоритму именования, алгоритмам коммуникации и алгоритму использования в коммуникации структуры из слов, то есть текста.
Ограничения языка
Человек, научившийся именовать детектируемые им состояния и использовать их в алгоритмах коммуникации для выживания, начал эволюционное накопление алгоритмов, работающих со словами. Поначалу, вероятно, это было произнесение подряд нескольких слов, каждое из которых, только частично характеризует некое состояние, требуемое для выполнения коллективного поведения. Затем в последовательности слов должны были появиться глаголы для обозначения действий, требуемых в совместном поведении некоторого коллектива. Затем для совместных алгоритмов стало необходимо разделение текстов, описывающих уже существующие состояния, и текстов, формулирующих состояния целевые, для чего глаголы специализировались по наклонениям, временам и видам. И опять совсем как при рассмотрении эволюции памяти не так важна последовательность совместно переживаемых ситуаций синтеза и исполнения коммуникационных алгоритмов, послужившая появлению, например, деепричастий или союзов. Главная мысль в том, что возникновение этих специализаций слов и текстовых структур формировалось именно в процессе развития коммуникационных алгоритмов, обеспечивающих выживание. А следовательно они эволюционно накапливалась в череде новых ситуаций аналогично последовательности, рассмотренной в статье "Эволюция памяти".
И текст стал полезен алгоритмами своего использования, а вместе с этим появилось множество дополнительных алгоритмов формулирования, выслушивания и трансформации текста. На основе текста стало гораздо проще работать математикам, уже второй раз перенесшим алгоритмы расчета, но теперь уже с камешков (абака) на "текстовые" цифры. Но при всей пользе алгоритмы работы с текстом имели внутри себя и ловушки. Слишком легко было с использованием имен формулировать бессмысленные и бесполезные тексты. И даже во внешне корректных текстах легко было спрятаться неразрешимой алгоритмически проблеме. Это изоморфно чрезмерной свободе полученной программистами до введения концепции структурного программирования, ограничившей возможность использования безусловного перехода, усердное использование которого повышает риск написания компилируемой, но невыполнимой и потому бесполезной программы.
В естественном языке тоже есть невыполнимые тексты-программы. Их множество, и яркие образцы называют парадоксами. Парадокс лжеца, парадокс брадобрея, парадокс Ахиллеса и черепахи… Как ни странно, но перечисленные образцы — это выполненные средствами естественного языка, неформальные исследования бесконечной рекурсии, являющейся одним из итерационных видов структурной организации алгоритма. Причем показательна бесполезность всех перечисленных рекурсии ввиду отсутствия граничного условия завершения. Парадокс Ахиллеса вместе с тем является методом алгоритмического овладевания словом "бесконечность". Это понятие, не подвластное пифагорейцам, теперь успешно служит математике и уже позволяет вычислить сумму бесконечного ряда, указав момент времени, когда Ахиллес догонит черепаху.
Полезные формы преобразования текстов, начав с методов, похожих на силлогизмы Аристотеля, в своем развитии оказали ключевое воздействие, выполнив формализацию языка, требуемую для повышения эффективности построения на его основе алгоритмов. Так была предложена логика высказываний и логика первого порядка с алгоритмами автоматизировавшими логический вывод. В этом процессе выполнена формализация вычислительных процессов, например, в виде лямбда-исчисления. Конечно, развитие алгоритмов никогда не было целью этих процессов. Этой целью было неявное желание каждого математика создать формальную систему автоматического вычисления для решения конкретных задач, в идеале для решения всех возможных задач. И в стремлении к этой цели были успехи. Например, была осуществлена с некоторыми ограничениями автоматизация вычисления истинности (ложности) высказывания. Но в каждой области задач перед математиками начали нащупываться непреодолимые границы вычислимости. Это были преграды и виде вычислительной сложности, и в незавершаемости требуемого вычислительного процесса, а в заключение появилось доказательство коренного ограничения возможности формального вывода (теорема о неполноте Гёделя).
Многие высказывают мнение, что теорема Гёделя — коренное ограничение и в создании алгоритмов, и в познаваемости мира. Но по сути она констатирует ограничение лишь языковых способов синтеза алгоритмов, а вместе с ним и ограничение языкового познания мира. К счастью, истинные высказывания могут быть сформулированы извне, а не только вычислены внутри формальной системы. Аналогично этому и алгоритмы могут быть синтезированы без ограничения рамками существующих языковых средств. Подтверждение этому, например, подсознательные способы создания алгоритма, рассмотренные выше в текущей статье, которые точно не тождественны языковому синтезу в формальной системе. В целом, для многих алгоритмов и стратегий человека их сопоставление с вычислением, о котором сформулировано доказательство Гёделя, является по меньшей мере странным. Примеров таких "невычислений" много, но один из них уже был в деталях рассмотрен в статье этой серии ( "Эволюция поведения"), и он описывал использование хлеба человеком с последовательным увязыванием очень разнородных операций (от выращивания пшеницы до украшения торта свечками), которые эволюционным накоплением могут быть сгруппированы в едином алгоритме.
Вычисление — это вид алгоритма
И такое несоответствие используемого нами слова "алгоритм" математическому вычислению — это, конечно, проблема, но, пожалуй, несколько надуманная. Как уже было упомянуто в статье ("Физика"), очень похоже, что причина этого несоответствия в пальме первенства по изобретению термина "Алгоритм", которая принадлежит математической науке. Но есть основа для устранения коллизии и объединения таких разных понятий, как вычисление и поведение, каждое из которых мы попеременно называем алгоритмом.
Эта основа — однородность в нашем мире, позволяющая в разных его локалях одинаково выполняться некоторым его процессам. Именно указание на эту однородность(повторимость) целесообразно закрепить за словом Алгоритм.
Алгоритм — это повторимый способ изменения в нашем мире.
Введя такое обозначение, обнаружим, что ему автоматически будут соответствовать вычисления математиков в формальной системе языка с сохранением всех теоретических достижений области, и при этом не привносится ничего нового. Новое же появляется вовне при работе со множеством невычислительных, повторимых процессов мира, которые имеют многие близкие вычислениям свойства, но и существенное количество свойств дополнительных, совокупность которых в конечном счете позволяет анализировать алгоритмы поведения, мышления и другие проявления жизни.
Деталям этих важных свойств, наблюдаемых в разных прикладных областях, необходимо место в последующих статьях. А здесь следует попытаться описать, что это нововведение даёт нам в решении вопросов, исследуемых рассматриваемой философией.
В рамках философского исследования поведения человека понятие "Алгоритм" с указанной структурой позволяет слова, описывающие внешние признаки поведенческих и мыслительных процессов (такие, как "добро", "любовь", "смешно", "справедливо"...) и трансформацию текстов с использованием этих слов заменить на изучение особенностей алгоритмических процессов, формирующих и использующих эти признаки. Конечно, тем самым мы устраняем существенное отличие философского исследования, а именно, замкнутость формирования знаний в поле рассуждений с опорой лишь на средства языка. Но из справедливости неполноты для формальных систем, отмеченной Гёделем, почти "доказуема" неполнота подобных средств и в границах естественного языка. Формальная система — лишь один из способов создавать алгоритмы. Естественный язык — это весьма несовершенная версия такой системы. Потому необходимо выбираться из ограничений естественного языка. Но это не значит, что язык становится лишним инструментом. Потому что естественный язык — великое средство. Но это средство не для синтеза алгоритма, а для описания и исполнения его структуры. И в "Общей теории алгоритмов" используются эти описательные возможности естественного языка для демонстрации алгоритмов, синтезированных иными способами. Самое примечательное в упомянутом теоретическом построении на естественном языке то, что оно парадоксально в рекурсивном смысле, и внутри получаемой теории описываются процессы, приводящие к алгоритмам формирования теорий, и вводится определение термина "Теория".
Но парадокс "Теории теорий" — это скорее развлечение для гурманов-теоретиков. А практическая польза проще. Это преимущества, получаемые от использования алгоритмического способа изучения разнообразных окружающих нас процессов. Демонстрации этого способа были посвящены почти все статьи серии. При этом процесс изучения сводится к нахождению в области алгоритмов и анализу способов их синтеза и трансформации. Многие детали этого способа совместно с терминами, облегчающими анализ, уже можно найти в теоретической книге. А в следующей статье необходимо рассмотреть важную особенность, несколько обойденную в предыдущих статьях, но являющуюся одной из ключевых в алгоритме. Эта особенность — использование структуры для описания "последовательности действий", указываемой в определениях алгоритма.
Выводы
Игра с номером в заголовке статьи продолжается. Указанный номер — опять 5. И подсказку об использованном коде проще найти в геометрии.
Вознаградим себя за проделанную в чтении текущей статьи работу. Пусть даже наградой будет лишь похвала и перечисление значимых свершений.
В этой статье мы:
- рассмотрели один из видов интерполяционного синтеза алгоритма;
- разобрали особенности синтеза поведения с использованием абстрактного переноса;
- нащупали основу "выживания" алгоритмов;
- декларировали ограниченность языка в синтезе алгоритмов;
- указали базу для введения определения алгоритма.
Эта статья заслуживает критики. Кажется, что в ней совсем позабыта заявленная над катом "формализация познания"? Не совсем так. И самые внимательные могут подтвердить: ключевые моменты сформулированы, но зачем-то удержаны на втором плане повествования. Для этого есть причина. Всё объясняется планомерным движением к цели, выбранной при создании серии "Что такое алгоритм?!". Каждое слово, написанное под этим заголовком, ведёт к её заключительной статье, в которой необходимо зафиксировать единственно доступный нам способ Познания и на основе этого дать определение слову "Информация". Да, эта цель достижима, но, как Вы видите, каждая статья не становится легче предыдущей. Перед заключительной статьёй нам необходимо сделать всего одну тематическую остановку. Давайте попробуем с использованием всех ранее отмеченных закономерностей растерзать "Искусственный интеллект"?
Спасибо Вам за внимание.
Отзывы
Буду очень благодарен за критику, отзывы, пожелания и предложения, так как они помогают мне скорректировать направление развития работы.
Отдельное волнение у меня есть по стилю повествования и форматированию, используемым в статье (кавычки, абзацы, курсив...). Напишите, пожалуйста, если у Вас есть конструктивные замечания к ним. Можно личным сообщением.
Ссылки
- Главная страница и теория работы (GitLab GPL): Проект "Общая теория алгоритмов"
- Вводная статья работы "Разрабатываем теорию алгоритмов как проект с открытым исходным кодом". Пожалуйста, не судите строго эту наивную публикацию "сверх-идеи" устаревшей версии 2019 года.
- Статьи серии "Что такое алгоритм?!"
- Статьи в хабе "Программирование":
- Рисунок яблока в статье сформирован сообществом Wikipedia. Лицензия (Creative Commons Attribution-Share Alike 4.0 International)
- Иллюстрация "Свобода" — Картина "Свобода, ведущая народ". Художник Эжен Делакруа (1830 г.).
- Иллюстрация "Черепаха, несущая 21 мир" — Glauben, Wissen und Kunst der alten Hindus in ursprünglicher Gestalt und im Gewande der Symbolik, mit vergleichenden Seitenblicken auf die Symbolmythe der berühmteren Völker der alten Welt, mit hieher gehörigen Literatur und Linguistik — Niclas Müller. Kupferberg, 1822 — Google books
- Иллюстрация "Центр небесных сфер" — The cosmographical glasse, conteinyng the pleasant principles of cosmographie, geographie, hydrographie, or nauigation — Cuningham, William, 1531. Library of congress
- Иллюстрация "Олицетворение" — Художник А.М. Куркин. Иллюстрация к "Сказке о мёртвой царевне и семи богатырях" (А.С. Пушкин).
- Иллюстрация "Тор" — Картина "Битва Тора с великанами", художник Мортен Эскиль Винге (1872 г.)
- Иллюстрация "Павлин" — Мультфильм «Приключения Мюнхаузена». Творческое объединéние «Экран»
- Иллюстрация "Гроза" — Мультфильм "Смешарики". Серия "Город Омск". Студия компьютерной анимации «Петербург»
- Иллюстрация "Погибель в пучине" — Гравюра Этьена Клода Войсара по акварели Пьера-Дени де Монфора из 2 тома «Естественной истории» (Париж, 1801 г.)
- Иллюстрация "Дарвин" — Карикатура "Man is but a worm", опубликованная в журнале Punch (1881 г.)
- Иллюстрация "Мем" — Работа японского художника, работающего под псевдонимом Ukiyomemes
- Иллюстрация "Классы слов" — Egyptian Grammar Being An Introduction To The Study Of Hieroglyphs By Alan Gardiner. (1957 г.) archive.org
- Иллюстрация "Рекурсия" — Литография "Рисующие руки". М.К.Эшер (1948 г.) Официальный вебсайт
- Иллюстрация "Теория теорий" — Изображение уробороса в алхимическом трактате. Феодор Пелеканос (1478 г.)
Комментарии (16)
ai_borisov Автор
02.12.2021 09:12Здравствуйте.
Указанному в текущей статье предложению далеко до высокого титула "Определение". Пожалуй, это больше именно "суть", которая опускается почти во всех имеющихся определениях слова "Алгоритм". На самом деле легко объяснимо, почему свойство "повторимость" не упоминается даже в приведенной Вами формулировке Кнута. Это определение про "математический алгоритм" (вычисление). Способы описания и выполнения вычислений почти во всех случаях делают повторимость неизбежной. Совсем не так для алгоритмов поведения.
Возьмем алгоритм поведения: "Съешь первый гриб, встреченный на пешей прогулке по лесу". Осенью в грибную пору он вполне конечен. Для исполнителя-человека — вполне определен. Что здесь будет вводом? Ну, допустим, лес. А вот "вывод" и "эффективность" довольно туманны. Какая задача у этого алгоритма? Наесться, интересно погулять или поиграть в "русскую рулетку"?
Все заданные вопросы совсем не к тому, что определение Дональда Кнута некорректно. Просто оно не подходит для анализа алгоритмов поведения. Для этих "алгоритмов" необходимы другие "важные черты". И одна из критически важных особенностей алгоритмов поведения — это "Повторимость". Про эту и другие особенности первая статья серии. Способы играться по-другому устроенным определением алгоритма во всех остальных статьях, но ни в одной из этих статей нет "Определения". И это сделано намеренно. Статьи — развлечение и привлечение внимания. Теория и определения в проекте на GitLab. Там же место обсуждению достоинств и недостатков предлагаемых формальных определений.
Спасибо Вам за отзыв.
С уважением.
ai_borisov Автор
07.12.2021 00:17Подправил в статье вывод. Снова поспешил и перемудрил, но стараюсь здесь исправиться.
Следующее завершение "подразумевалось", но было коряво исполнено и не досказано:
Кажется, что в статье совсем позабыта заявленная над катом "формализация познания"? Не совсем так. И самые внимательные могут подтвердить: ключевые моменты сформулированы, но зачем-то удержаны на втором плане повествования. Для этого есть причина. Всё объясняется планомерным движением к цели, выбранной при создании серии "Что такое алгоритм?!". Каждое слово, написанное под этим заголовком, ведёт к её заключительной статье, в которой необходимо зафиксировать единственно доступный нам способ Познания и на основе этого дать определение слову "Информация". Да, эта цель достижима, но, как Вы видите, каждая статья не становится легче предыдущей. Перед заключительной статьёй нам необходимо сделать всего одну тематическую остановку. Давайте попробуем с использованием всех ранее отмеченных закономерностей растерзать "Искусственный интеллект"?
Достойна обсуждения возможность Хабра исправлять статьи после их опубликования. Стоит ли платформе позволять это делать? Чем это может быть чревато?
С уважением всем, поставившим статью в закладки.
balu736
С точки зрения инженера человеческий организм работает на основе алгоритмов. Физиологи используют термин "условные рефлексы". Набор рефлексов постоянно наращивается - на стадии внутриутробного существования, по мере развития мозга, образуются нейронные связи, обеспечивающие жизнедеятельность дитяти сразу после рождения.
Думая статья была бы предметнее, если бы автор использовал материалы по морфологии мозга.
Заголовок обещает читателю раскрыть суть понятия "алгоритм". Таковая раскрывается ближе к середине - "Алгоритм — это повторимый способ изменения в нашем мире."
Несколько раз перечитал определение и понял, что определение лишено подлежащего и сказуемого. Действительно, после слов "способ изменения" напрашивается слово, раскрывающее предмет изменения.
Приведу отточенную формулировку понятия алгоритма - "Алгоритм — это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность (Д. Э. Кнут)."
Akon32
Если брать определение алгоритма, приведённое вами ниже, это не так. Есть несоответствия: нет последовательности операций, нет конкретного множества задач, результат не всегда повторяем.
Алгоритмы - лишь один из способов вычислений, весьма ограниченный и сложный для реализации, и специфичный для людей, занимающихся математикой, и компьютеров. Даже сейчас в компьютерах не все вычисления производятся с помощью алгоритмов - в нейронных сетях результат больше зависит от значений весовых коэффициентов, а не последовательности действий.
balu736
Это не мое определение - я в скобках указал автора и весьма авторитетного. Нейронные сети "при всей загадочности" тоже работают по алгоритмам, которые являются аналогами человеческих рефлексов. Последние по количеству факторов, влияющих на принятие решения, конечно, превосходят нейронные сети.
Akon32
Я согласен с определением алгоритма за авторством Кнута, но считаю, что то, что есть в человеческом организме, по большей части не соответствует этому определению. Рефлексы - это правила, но не алгоритмы. Алгоритмы - искусственный конструкт, небольшая специализированная надстройка для вычислений, молодая и ограниченная. Вероятно, поэтому попытки создать ИИ путём написания алгоритмов провалились, а обучение нейронных сетей дало некоторый прогресс.
Что в НС является алгоритмом? Последовательность действий полностью задаётся структурой сети, это похоже на алгоритм, да. Результат определяется весовыми коэффициентами. Можно по-разному обучить сеть с одной и той же структурой, и она при одной и той же последовательности действий будет давать разный результат. Это уже вызывает сомнения. Где здесь конкретное множество задач, когда одну и ту же сеть можно натренировать на любую задачу? Часто НС может ошибаться. Где свойство определённость?
balu736
Вы просто незнакомы с работой нервной системы - это 100-процентно алгоритмизированная структура. Никакой компьютер не воссоздаст того количества нейронных связей, которыми обладает мозг. Приводить цифры не буду - посмотрите интернет.
Относительно тренировки нейронной сети на несколько задач - обычно ИИ затачивают на конкретные задачи. Например, выявлять на томограммах признаки зарождающихся раковых клеток. Спрашивается, почему эту же сеть невозможно научить играть в шахматы. Ответ - мозг для решения конкретных задач выделяет некоторое скопление нервных клеток. Когда возникает необходимость решения другой задачи, могут быть задействованы часть нервных клеток, работающих по другим направлениям, но одновременно будут подключены и дополнительные. Надеюсь объяснил доступно.
ai_borisov Автор
Поведение человека это алгоритм?
Если поведение приравниваем с алгоритмом, то:
Как организована нервная структура конечного набора правил?
Какая последовательность операций в процессе слушания человеком классической музыки?
Какая "определенность" у первого прослушивания ребенком сказки "Колобок"?
Что есть "вывод" в прослушивании ребенком сказки "Колобок" в пятый раз?
Если термин алгоритм нельзя использовать для описания поведения, то:
Каким словом описать то в поведении, что в некоторых примерах весьма детально соответствует определению Кнута (приготовление салата по рецепту), а в некоторых неуловимо выскальзывает между его "важных черт"?
Можно придумать новый термин, например, "Мета-алгоритм". Станет ли проще от этого объяснение, если указать, что в этом термине нужно из привычного алгоритма удалить "последовательность" при этом, добавив "повторимость"?
Имеет ли право на существование любой и вариантов введения нового термина (расширение смысла слова "Алгоритм" или введение "Мета-алгоритма"), если он дает простые ответы на все перечисленные вопросы?
Многовато вопросов. Тут лучше остановиться.
С уважением.
Akon32
Откуда такие выводы?...
Какую-нибудь ResNet с одинаковой структурой можно обучить как распознаванию котиков, так и распознаванию времён года. Последовательность действий одна, задачи разные. По определению Кнута у алгоритма должно быть конкретное множество задач, он не может делать что угодно. Нестыковка.
addewyd
Задача одна. Данные разные.
ai_borisov Автор
У нетренированной ИНС задача, действительно, одна. И алгоритм тоже один — по обучающей выборке данных натренироваться на распознавание (признаковую трансформацию) этих данных. В итоге фиксация полученных весовых коэффициентов расчетной структуры слоев ИНС обеспечивает вполне конкретный алгоритм, например, распознавание котика. Для других обучающих данных фиксация произойдет на алгоритме распознавания пчелы или, возможно, классификации изображений по временам года.
В процессе обучения ИНС происходит синтез нового алгоритма. И результирующие разные алгоритмы ("котик", "пчёлка", "сезоны") — занимаются выполнением одной и той же вычислительной задачи отождествления данных, сходных с обучающим набором, (выполняя заданную и одинаковую для каждого варианта последовательность операций пересчета и трансформации некоторого массива данных), но при этом каждая из них решает разные задачи в плане практического использования.
Но это был простой вариант.
А если взять два экземпляра нетренированной ИНС посложнее (AlphaGo). И натренировать один экземпляр для игры "Го", а второй оставить для распознавания пчелок (пример достаточно условный, но не думаю, что это непосильная задача для обозначенной ИНС). Синтезированные в результате тренировок алгоритмы очень различаются. Пчелок как в прежнем варианте узнают-распознают. А вот в "игроке Го" ситуация посложнее: наблюдаются последовательности действий, стратегические композиции.
Здесь уже достаточно сложно сказать, что эти две натренированные ИНС решают одну задачу.
Но, конечно, это не делает сложный вариант ИНС совсем не вписывающимся в определение алгоритма Кнута. Просто задача у алгоритма ИНС не тривиальная — алгоритм создания алгоритма решения другой задачи и алгоритм исполнения созданного алгоритма. Например, если это будет алгоритм сборки "Ханойской башни", то синхронно будут исполняться два алгоритма (вычислительный и синтезированный сборочный). Какой-то из них, конечно, будет соответствовать терзаемому определению.
К сожалению, для алгоритмов поведения человека все совсем не так просто.
С уважением.
ai_borisov Автор
Да, тяжело применить привычное определение алгоритма к упомянутым Вами ИНС. Для описания получаемых ИНС результатов больше подходит слово "Трансформация". И руководствуясь только этим можно было бы назвать текущую серию статей "Что такое трансформация".
Но есть важная область, в которой привычный нам термин "Алгоритм" с перечисленными выше свойствами также не подходит. И, как ни странно, в этой области мы без сомнений используем слово "Алгоритм". Да, поведение человека не вписывается в определение Д.Кнута. Но и "трансформацией" поведение назвать трудно. Эта коллизия выносила мне мозг долгое время, пока скрепя сердце не попытался отказаться от абсолютности и безупречности существующего определения. Это было не легко, но игра стоила свеч. И на текущем уровне проработки формализации уже несколько с улыбкой вспоминаю первоначальную нерешительность.
Да, способ используемый в ИНС тождественен по сути приведенному в текущей статье синтезу поведения. Этот способ интерполяционного синтеза алгоритма. И в полученном в ИНС алгоритме, как и в памяти человека, нет последовательности зачастую нет и определенности, а в наличии только структура исполнения. Это достаточно просто объяснимо в несколько подправленных терминах ОТА. Но попытки объяснить необходимость пересмотрения существующих терминов всегда встречаются в штыки.
Надеюсь эти "штыки", категоричность и сложноязычность этой статьи не опустошат совсем карму. И развлекательное обсуждение моей любимой и "трудной" темы будет продолжено.
Спасибо Вам за комментарии.
С уважением.
balu736
И вас благодарю за сдержанность. Мои рассуждения основаны на знаниях анатомии и физиологии человека, на изучении вопросов морфологии мозга, которые глубоко переплетаются с программированием и ИИ. Кстати, программированием тоже пришлось заниматься, чтобы объяснять разработчикам тонкости технологий, которые требуется отразить в коде.
ai_borisov Автор
Мне категорически не хватает собеседника, углубленно владеющего обозначенной Вами областью знаний. Есть вероятность, что диалог будет нам обоюдно полезен, конечно, если у Вас есть на это время и желание. Моя электронка доступна на GitLab.
В любом случае рад нашему знакомству.
balu736
Приятно было познакомиться. Моя почта на яндексе - mik736 - напишите, что вам интересно.
ai_borisov Автор
Промахнулся в интерфейсе. Ответ в основной ветке.