Pull to refresh

Comments 16

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

Думая статья была бы предметнее, если бы автор использовал материалы по морфологии мозга.

Заголовок обещает читателю раскрыть суть понятия "алгоритм". Таковая раскрывается ближе к середине - "Алгоритм — это повторимый способ изменения в нашем мире."

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

Приведу отточенную формулировку понятия алгоритма - "Алгоритм — это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность (Д. Э. Кнут)."

С точки зрения инженера человеческий организм работает на основе алгоритмов.

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

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

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

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

Нейронные сети "при всей загадочности" тоже работают по алгоритмам

Что в НС является алгоритмом? Последовательность действий полностью задаётся структурой сети, это похоже на алгоритм, да. Результат определяется весовыми коэффициентами. Можно по-разному обучить сеть с одной и той же структурой, и она при одной и той же последовательности действий будет давать разный результат. Это уже вызывает сомнения. Где здесь конкретное множество задач, когда одну и ту же сеть можно натренировать на любую задачу? Часто НС может ошибаться. Где свойство определённость?

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

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

"Алгоритм — это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность (Д. Э. Кнут)."

Нервная система — это 100-процентно алгоритмизированная структура

Поведение человека это алгоритм?


Если поведение приравниваем с алгоритмом, то:


Как организована нервная структура конечного набора правил?
Какая последовательность операций в процессе слушания человеком классической музыки?
Какая "определенность" у первого прослушивания ребенком сказки "Колобок"?
Что есть "вывод" в прослушивании ребенком сказки "Колобок" в пятый раз?


Если термин алгоритм нельзя использовать для описания поведения, то:


Каким словом описать то в поведении, что в некоторых примерах весьма детально соответствует определению Кнута (приготовление салата по рецепту), а в некоторых неуловимо выскальзывает между его "важных черт"?


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


Имеет ли право на существование любой и вариантов введения нового термина (расширение смысла слова "Алгоритм" или введение "Мета-алгоритма"), если он дает простые ответы на все перечисленные вопросы?


Многовато вопросов. Тут лучше остановиться.


С уважением.

Вы просто незнакомы с работой нервной системы - это 100-процентно алгоритмизированная структура.

Откуда такие выводы?...

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

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

Задача одна. Данные разные.

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


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


Но это был простой вариант.
А если взять два экземпляра нетренированной ИНС посложнее (AlphaGo). И натренировать один экземпляр для игры "Го", а второй оставить для распознавания пчелок (пример достаточно условный, но не думаю, что это непосильная задача для обозначенной ИНС). Синтезированные в результате тренировок алгоритмы очень различаются. Пчелок как в прежнем варианте узнают-распознают. А вот в "игроке Го" ситуация посложнее: наблюдаются последовательности действий, стратегические композиции.


Здесь уже достаточно сложно сказать, что эти две натренированные ИНС решают одну задачу.


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


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


С уважением.

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


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


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


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


Спасибо Вам за комментарии.


С уважением.

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

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


В любом случае рад нашему знакомству.

Приятно было познакомиться. Моя почта на яндексе - mik736 - напишите, что вам интересно.

Здравствуйте.


Указанному в текущей статье предложению далеко до высокого титула "Определение". Пожалуй, это больше именно "суть", которая опускается почти во всех имеющихся определениях слова "Алгоритм". На самом деле легко объяснимо, почему свойство "повторимость" не упоминается даже в приведенной Вами формулировке Кнута. Это определение про "математический алгоритм" (вычисление). Способы описания и выполнения вычислений почти во всех случаях делают повторимость неизбежной. Совсем не так для алгоритмов поведения.


Возьмем алгоритм поведения: "Съешь первый гриб, встреченный на пешей прогулке по лесу". Осенью в грибную пору он вполне конечен. Для исполнителя-человека — вполне определен. Что здесь будет вводом? Ну, допустим, лес. А вот "вывод" и "эффективность" довольно туманны. Какая задача у этого алгоритма? Наесться, интересно погулять или поиграть в "русскую рулетку"?


Все заданные вопросы совсем не к тому, что определение Дональда Кнута некорректно. Просто оно не подходит для анализа алгоритмов поведения. Для этих "алгоритмов" необходимы другие "важные черты". И одна из критически важных особенностей алгоритмов поведения — это "Повторимость". Про эту и другие особенности первая статья серии. Способы играться по-другому устроенным определением алгоритма во всех остальных статьях, но ни в одной из этих статей нет "Определения". И это сделано намеренно. Статьи — развлечение и привлечение внимания. Теория и определения в проекте на GitLab. Там же место обсуждению достоинств и недостатков предлагаемых формальных определений.


Спасибо Вам за отзыв.


С уважением.

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


Следующее завершение "подразумевалось", но было коряво исполнено и не досказано:


Кажется, что в статье совсем позабыта заявленная над катом "формализация познания"? Не совсем так. И самые внимательные могут подтвердить: ключевые моменты сформулированы, но зачем-то удержаны на втором плане повествования. Для этого есть причина. Всё объясняется планомерным движением к цели, выбранной при создании серии "Что такое алгоритм?!". Каждое слово, написанное под этим заголовком, ведёт к её заключительной статье, в которой необходимо зафиксировать единственно доступный нам способ Познания и на основе этого дать определение слову "Информация". Да, эта цель достижима, но, как Вы видите, каждая статья не становится легче предыдущей. Перед заключительной статьёй нам необходимо сделать всего одну тематическую остановку. Давайте попробуем с использованием всех ранее отмеченных закономерностей растерзать "Искусственный интеллект"?

Достойна обсуждения возможность Хабра исправлять статьи после их опубликования. Стоит ли платформе позволять это делать? Чем это может быть чревато?


С уважением всем, поставившим статью в закладки.

Sign up to leave a comment.

Articles