Логика сознания. Часть 9. Искусственные нейронные сети и миниколонки реальной коры

    Приходит ветеринар к терапевту. Терапевт: — На что жалуетесь? Ветеринар: — Нет, ну так каждый может!

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

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

    Искусственные нейронные сети


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

    Принцип 1. Каждый нейрон – это детектор некого свойства.

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

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

    Упрощенная схема реального нейрона

    Из описанного выше с неизбежностью следует формальная модель – искусственный нейрон Маккалока — Питтса, разработанный в начале 1940-х годов (Маккалох Дж., Питтс У., 1956).

    Формальный нейрон Маккалока — Питтса

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



    Логистическая функция

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

    В итоге такой нейрон превращается в пороговый сумматор. При достаточно крутой пороговой функции сигнал выхода нейрона – либо 0, либо 1. Взвешенная сумма входного сигнала и весов нейрона – это сравнение двух образов: образа входного сигнала и образа, описываемого весами нейрона. Результат сравнения тем выше, чем точнее соответствие этих образов. То есть нейрон, по сути, определяет, насколько подаваемый сигнал похож на образ, записанный на его синапсах. Когда значение взвешенной суммы превышает определенный уровень, и пороговая функция переключается в единицу, это можно интерпретировать как решительное заявление нейрона о том, что он узнал предъявляемый образ.

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

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

    Принцип 2. Информация в нейронной сети – это признаковое описание.

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

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

    Например, возьмем бинарный 32-битный вектор. Будем кодировать буквы английского алфавита.

    Первый вариант. Нулевой бит – буква «A», первый бит буква «B» и так далее. 26 бит будут советовать 26 буквам. Затем сделаем бит – заглавная буква или прописная. Бит – курсив или не курсив, бит на толщину, бит на подчеркивание и так далее.  Если зараз кодировать одну букву, то можно закодировать одну из 26 букв в разных вариантах написания. Это типичное признаковое описание. Каждый бит – это определенный признак.

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

    Информация, с которой имеют дело нейронные сети – это всегда признаковое описание. И это следует из первого принципа, согласно которому нейроны – детекторы признаков.

    Принцип 3. Нейронная сеть, как правило, – это преобразователь признаковых описаний.

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

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


    Многослойный персептрон с двумя скрытыми слоями (Хайкин, 2006)

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

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

    Независимо от типа сети на каждом слое мы имеем дело с признаковым описанием, составленным из нейронов-детекторов.

    Принцип 4. Количество нейронов в сети определяет число признаков, с которыми может работать эта сеть.

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

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

    Принцип 5. Обучение сети – это настройка весов соединяющих нейроны связей.

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

    Два основных вида обучения – это обучение без учителя и обучение с учителем.

    Обучение без учителя

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

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


    Автокодировщик

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

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

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

    Обучение с учителем

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

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

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

    • Первое правило — Если выходной сигнал персептрона неверен и равен нулю, то необходимо увеличить веса тех входов, на которые была подана единица.
    • Второе правило — Если выходной сигнал персептрона неверен и равен единице, то необходимо уменьшить веса тех входов, на которые была подана единица.

    Если Y – это вектор реального выхода персептрона, а D – вектор, который мы ожидаем получить, то вектор ошибки:


    Дельта-правило для изменения связи между i и j нейронами:



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

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

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

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

    Принцип 6. Конечность обучения. Дилемма стабильности-пластичности.

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

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

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

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

    Вариант решения предложен Стефаном Гроссбергом (Grossberg, 1987) как «теория адаптивного резонанса». Суть этой теории в том, что поступающая информация делится на классы. Каждый класс имеет свой прототип – образ, наиболее точно соответствующий этому классу. Для новой информации определяется, принадлежит ли она к одному из существующих классов, либо она является уникальной, непохожей ни на что предыдущее. Если информация не уникальна, то она используется для уточнения прототипа класса. Если же это что-то принципиально новое, то создается новый класс, прототипом которого ложится этот образ. Такой подход позволяет, с одной стороны, создавать новые детекторы, а с другой стороны, не разрушать уже созданные.

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

    Модель обучения с активной памятью


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

    Хранение предыдущего опыта сильно упрощает вопрос стабильности-пластичности сети.
    Рассмотрим задачу распознавание цифр, например, набора MNIST. На вход нейронной сети подаются изображения рукописных цифр, на выходе смотрят за реакцией нейронов, соответствующих цифрам от 0 до 9. Входные изображения имеют размер 28 на 28 пикселей, всего 784 точки.


    Пример рукописных цифр набора MNIST

    Обычно для решения такого рода задач используют сверточные сети и многоуровневую архитектуру. Подробнее работу таких сетей мы рассмотрим позже. В силу простоты и предварительной подготовленности набора MNIST (все цифры одного размера и отцентрованы) хорошие результаты получаются даже при применении простого однослойного или двуслойного персептрона.

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


    Однослойная сеть для распознавания рукописных цифр

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

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


    Варианты «двойки»

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

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

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

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

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

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

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

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

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


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

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

    Обучение такой сети с учителем сводится к запоминанию примеров и созданию связей типа «пример-ответ».

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

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

    Механизм сравнения

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


    Единичное смещение приводит к полному отсутствию совпадения (слева). Аналогичная ситуация после размытия дает существенное совпадения (справа)   (Fukushima K., 2013)

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

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

    Выход воспоминания

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

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

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

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

    Активация выходных нейронов

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

    Бинарное кодирование выхода сети


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

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

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

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


    Кодирование выхода сети бинарным кодом

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

    Посмотрим на получившуюся сеть в разрезе сформулированных ранее шести принципов классической нейронной сети:

    Принцип 1. Каждый нейрон – это детектор некого свойства.
    Не выполняется. Выходные нейроны не являются нейронами бабушки. Один и тот же нейрон срабатывают на разные признаки.
    Принцип 2. Информация в нейронной сети – это признаковое описание.
    Не выполняется. Выход сети – это код понятия, а не набор признаков. Вход сети также может работать с кодами, а не с векторами признаков.
    Принцип 3. Нейронная сеть, как правило, – это преобразователь признаковых описаний.
    Не выполняется.
    Принцип 4. Количество нейронов в сети определяет число признаков, с которыми может работать эта сеть.
    Не выполняется. Выходной слой, содержащий сто нейронов, при кодировании сигнала десятью активными нейронами может отобразить 1.7х1013 различных понятий.
    Принцип 5. Обучение сети – это настройка весов соединяющих нейроны связей.
    Не выполняется. Воспоминания имеют «привязку» к нейронам, но никакого адаптивного изменения весов не происходит.
    Принцип 6. Конечность обучения. Дилемма стабильности-пластичности.
    Не выполняется. Как бы не была обучена сеть ее можно всегда дообучить просто добавив новые воспоминания. При добавлении не требуется учитывать скорость обучения. Разрушения старой информации не происходит. Кроме того, новая сеть способна на «однострельное обучение». Единичный опыт в любой момент обучения создает способность узнавать соответствующее явление. В отличие от традиционных сетей не требуется многократного повторения, так как нет процедуры итерационной настройки весов нейронов-детекторов.

    Миниколонки коры


    Основные информационные процессы нашего мозга происходят в его коре. Кора мозга делится на зоны. Каждая зона состоит из сотен тысяч одинаковых по строению миниколонок. Количество нейронов в миниколонке в зависимости от типа зоны от 100 до 200.

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


    Миниколонки первичной зрительной коры кошки (слева) и обезьяны (справа) (Peters and Yilmaze, 1993)

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

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

    Каждое поступающее в миниколонку понятие перекодируется в другое понятие. Эта перекодировка соответствует тому, какую трактовку входной сигнал приобретает в контексте миниколонки. Для получения итоговой трактовки перекодированные понятия складываются между собой, что соответствует логическому «или» их бинарных представлений.

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

    Фиксация кода признака

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

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

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

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

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

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

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


    Избранные по отношению к определенному сигналу места на поверхности дендрита одного нейрона

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

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

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

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

    Комбинаторная кластеризация


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


    Бинарные кода трех понятий и суммарный бинарный код

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

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

    Бинарные кода двух понятий и суммарный бинарный код

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

    Уменьшение реакции избранных мест для частичного сигнала

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

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

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

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

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

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

    Совместная работа миниколонок


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

    Когда обнаруживается контекст, в котором новое описание согласуется с предыдущим опытом, мы говорим, что трактовка в этом контексте реализует смысл информации. Именно в этой трактовке и создается воспоминание об этом опыте. Это относится не только к зрительной, но и к любой другой информации. Такое воспоминание удобно тем, что при «наложении» его на предыдущие воспоминания проступает общее между ними.

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

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

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

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

    Алексей Редозубов

    Логика сознания. Часть 1. Волны в клеточном автомате
    Логика сознания. Часть 2. Дендритные волны
    Логика сознания. Часть 3. Голографическая память в клеточном автомате
    Логика сознания. Часть 4. Секрет памяти мозга
    Логика сознания. Часть 5. Смысловой подход к анализу информации
    Логика сознания. Часть 6. Кора мозга как пространство вычисления смыслов
    Логика сознания. Часть 7. Самоорганизация пространства контекстов
    Логика сознания. Пояснение «на пальцах»
    Логика сознания. Часть 8. Пространственные карты коры мозга
    Логика сознания. Часть 9. Искусственные нейронные сети и миниколонки реальной коры
    Логика сознания. Часть 10. Задача обобщения
    Логика сознания. Часть 11. Естественное кодирование зрительной и звуковой информации
    Логика сознания. Часть 12. Поиск закономерностей. Комбинаторное пространство
    Поделиться публикацией

    Похожие публикации

    Комментарии 77
      +2
      Анекдот смешной :-)
        +1
        Как это ни удивительно, но очень похоже, что реальный мозг противоречит всем базовым принципам искусственных нейронных сетей.

        Или не противоречит: https://arxiv.org/abs/1510.05067


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

          +1
          Эта статья несколько о другом. Она о том, что обратное распространение в искусственых нейронных сетях можно заставить работать без того чтобы связи симметричного распространяли сигналы в обе стороны. Это ничего не говорит о том как работают биологические нейроны.
            +1
            6 Discussion
            [...]
            Nevertheless, this work shows that asymmetric BPs, while having less constraints, are not computationally inferior to standard BP. So if the brain were to implement one of them, it could obtain most of the benefits of the standard algorithm.
            [...]

            Мотивация этого исследования — проверка возможности реализации мозгом алгоритма обратного распространения ошибок.

              +1
              Да именно так. При этом в статье в мозг не лезут, а только показывают вариацию BP без возможности симметрично распространять сигнал по связи как туда, так и обратно. Считалось, что если связи в мозгу не могут обеспечить симметрию (веса работают в одну сторону), то и искать BP в коре смысла нет. Статья говорит, что искать стоит.
          +1
          >Принцип 1.
          >Общее между всеми ними – это соответствие нейрона знаменитой концепции «нейрона-бабушки».
          Как вы знаете, концепция «нейрона-бабушки» для некоторых нейронов человеческого мозга доказана экспериментально — некоторые слои видят линии определённой ориентации. Да и вообще, для каждого нейрона можно найти объекты, которые возбуждают эти нейроны.
          Насколько вероятно, что это окажется один конкретный объект или тип объектов? Это невозможно точно измерить (как вы переберёте все объекты?), но на мой взгляд это крайне маловероятно в общем случае — что для нейросети, что для человека. Поэтому смысл данного принципа от меня ускользает.

          >Ключевой момент для всех нейронных сетей – это восприятие нейронов, как детекторов каких-либо свойств.
          Простите, восприятие кем именно? Вами?

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

          >Принцип 2.
          >В кодах разных несвязанных между собой букв могут быть общие единицы. Такое кодирование уже не является признаковым описанием, хотя внешне и там, и там 32 битный бинарный вектор.
          Нейросеть из двух слоёв по два нейрона умеет делать XOR. А значит, представление после первого слоя уже не будет признаковым описанием, т.к. один из нейронов выучивает формулу 1-x1-x2, являющуюся комбинацией признаков.
          Поиграйтесь сами:
          http://playground.tensorflow.org/

          >Информация, с которой имеют дело нейронные сети – это всегда признаковое описание. И это следует из первого принципа, согласно которому нейроны – детекторы признаков.
          Как известно, из неправды можно вывести всё, что угодно. Что вы только что и продемонстрировали.

          >Принцип 3. Нейронная сеть, как правило, – это преобразователь признаковых описаний.
          > В рекуррентной сети только со временем возникает устойчивое состояние, которое и является результатом ее работы
          На практике таким видов рекуррентных сетей никто не пользуется, потому что такие нейросети весьма непредсказуемы.
          Вместо этого используется рекуррентные нейросети, где обратные связи не идут ниже текущего слоя нейронов, скажем, как в seq2seq модели, используемой для https://geektimes.ru/post/280912/

          >Принцип 4. Количество нейронов в сети определяет число признаков, с которыми может работать эта сеть.
          >Количество нейронов на каком-либо слое сети определяет то, сколько максимально признаков доступно для выделения этому слою.
          Увы, только если всерьёз верить, что нейросети работают с «признаковыми описаниями».
          На практике — между слоями нейросети образуются DR (distributed representation), ничем не отличающаяся от вашего описания DR, которое вы называете «бинарным представлением», и с той же характерной ёмкостью 2^N, где N — количество нейронов на слое.
          Именно поэтому даже нейросети из 300 нейронов умеют строить неплохие векторные представления слов: https://www.tensorflow.org/tutorials/word2vec/
          Именно они используются в нейросети-переводчике от Google.
          Кстати, word2vec по технологии работы близок к автокодировщику из вашего же параграфа ниже.

          >Принцип 5. Обучение сети – это настройка весов соединяющих нейроны связей.
          >Принцип 6. Конечность обучения. Дилемма стабильности-пластичности.
          >Если же это что-то принципиально новое, то создается новый класс, прототипом которого ложится этот образ.
          Вы, наверное, удивитесь, но этот механизм присутствует в современных нейросетях, хоть и появляется несколько другим образом: нейроны со временем начинают брать на себя новые функции. Для этого их можно случайным образом игнорировать в прямом проходе ( так делает ставший уже классическим DropOut ) или какие-то из них занулить (семейство методов, известное под разными названиями: Knowledge Distillation, Deep Compression, SqueeNet. Вот наглядный обзор одного из них: https://www.oreilly.com/ideas/compressing-and-regularizing-deep-neural-networks ). Но числа в экспериментах показывают, что это сжатие не настолько важно, как кажется, и BackPropagation + BatchNormalization (или LayerNormalization) вполне способны на то же самое без дополнительных усложнений.
          Кстати, я с удовольствием посмотрю на ваше решение, которое не теряло бы уровень обобщения при увеличении уровня стабильности. При сравнении различных моделей, не забудьте разделить достигнутый уровень стабильности-пластичности на размер памяти, необходимой для хранения данных.

          >Но в созданном воспоминании тройка останется, как находящийся рядом шум. Сравнивая потом это воспоминание с образом, где есть двойка, хотелось бы, чтобы шум не влиял на величину оценки совпадения.
          Увы, если бы механизма микросаккад и саккад не было, у человеческого зрения наблюдались бы те же самые проблемы.
          Для других же зон мозга есть отличный экспериментальный контрпример. Какой цвет холодильника? Белый. Что пьёт корова? Так и хочется сказать «молоко», правда? А почему? Ведь вы явно хотели сказать, что никаких «шумов» у мозга нет, в отличие от нейросетей?
          Касательно «шумов» и «усреднения» в нейросетях всё отлично объяснено с картинками:
          http://ufldl.stanford.edu/wiki/index.php/Exercise:Vectorization
          Если вы неправильно настраиваете метапараметры, то первый слой нейросети строит «размытые очертания», если правильно — то линии.
          Кстати, согласно вашим верованиям, нейросети на это в принципе не способны, ведь это же не признаковое описание. Я правильно понял прошлые части данной статьи?

          Ещё одним неизменным пунктом критики нейросетей является обратное распространение ошибки, которое вынужденно цементирует слои нейросети вместе. Но исследовательская группа DeepMind компании Google недавно показала, что механизм backpropagation можно сделать по-другому. В качестве эксперимента, они научили маленькую отдельную нейросеть выучивать «обратную связь» для каждого слоя. После этого, как вы понимаете, один большой backpropagation можно заменить на связи каждого слоя нейронов с этой зоной. Тогда нейросеть можно будет разбить на независимые зоны, обменивающиеся информацией.
          https://deepmind.com/blog/decoupled-neural-networks-using-synthetic-gradients/


          Подытожу.
          Знаете этот анекдот?
          " — Так мне Паваротти не понравился: картавит, в ноты не попадает…
          — Вы были на концерте Паваротти?
          — Нет, мне Рабинович по телефону напел."

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

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

          Кстати, почему-то, фокусируясь на микроколонках, «волнах» и «контекстах», вы обходите стороной тот момент, что человеческая кора без других областей мозга на практике не работает. Гиппокамп — это хорошо, но где же таламус и базальные ганглии в вашей модели?
            +1
            Как вы знаете, концепция «нейрона-бабушки» для некоторых нейронов человеческого мозга доказана экспериментально — некоторые слои видят линии определённой ориентации. Да и вообще, для каждого нейрона можно найти объекты, которые возбуждают эти нейроны.

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

            Приведу контрпример аналогией...

            Исходная фраза совсем о другом.

            Нейросеть из двух слоёв по два нейрона умеет делать XOR. А значит, представление после первого слоя уже не будет признаковым описанием, т.к. один из нейронов выучивает формулу 1-x1-x2, являющуюся комбинацией признаков.

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

            Увы, только если всерьёз верить, что нейросети работают с «признаковыми описаниями».
            На практике — между слоями нейросети образуются DR (distributed representation), ничем не отличающаяся от вашего описания DR, которое вы называете «бинарным представлением», и с той же характерной ёмкостью 2^N, где N — количество нейронов на слое.
            Именно поэтому даже нейросети из 300 нейронов умеют строить неплохие векторные представления слов: https://www.tensorflow.org/tutorials/word2vec/

            distributed representation — это «распределенное представление». Его суть именно в том, что выделяется множество факторов, которые позволяют создать признаковое описание в терминах общих для всех примеров. В семантическом случае используют частоту совместного проявления слов для проведения факторного анализа. Для этого как раз хорошо подходит автоэнкодер. Все получившиеся факторы (300 штук) являются типичными «бабушками» они все хорошо интерпретируются, это особенно хорошо видно на визуализациях.

            Вы, наверное, удивитесь, но этот механизм присутствует в современных нейросетях, хоть и появляется несколько другим образом: нейроны со временем начинают брать на себя новые функции. Для этого их можно случайным образом игнорировать в прямом проходе ( так делает ставший уже классическим DropOut ) или какие-то из них занулить (семейство методов, известное под разными названиями: Knowledge Distillation, Deep Compression

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

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

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

            Если вы неправильно настраиваете метапараметры, то первый слой нейросети строит «размытые очертания», если правильно — то линии.
            Кстати, согласно вашим верованиям, нейросети на это в принципе не способны, ведь это же не признаковое описание. Я правильно понял прошлые части данной статьи?

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

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

            Ну это вы загнули :)

            Мне кажется, если бы вы всё же разобрались, как работают нейронные сети, вы бы начали видеть глубокие аналогии между вашей «независимой» моделью и современными искусственными нейросетями.

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

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

              0
              >Признак, который является комбинацией других признаков не перестает быть признаком.
              А есть тогда хоть что-то в мире, что не является признаком?
              Или у вас какое-то своё понимание слова «признак», типа «признак — это то, с чем работает нейросеть»?

              >Его суть именно в том, что выделяется множество факторов, которые позволяют создать признаковое описание в терминах общих для всех примеров. В семантическом случае используют частоту совместного проявления слов для проведения факторного анализа. Для этого как раз хорошо подходит автоэнкодер. Все получившиеся факторы (300 штук) являются типичными «бабушками» они все хорошо интерпретируются, это особенно хорошо видно на визуализациях.
              Вопрос был несколько другим: вы утверждаете, что нейросети всегда работают с «признаками». Я утверждаю, что это не так. Более того, вы же сами и приводите контрпример: autoencoder. Внутреннее представление autoencoder не обязано быть как либо интерпретируемым.
              Давайте возьмём ещё более наглядный пример. Возьмите вектора из модели word2vec — 300 действительных чисел. Разве они основаны на признаках? И нейросеть seq2seq успешно с ними работает, выдавая такие же вектора на выходе.
              Так что вы подменяете практическое удобство работы с признаковыми описаниями с необходимостью работы с ними.
              Уж не говоря о том, что нейроны в вашей модели ровно таким же образом могут быть проинтерпретированы, а значит, тоже являются признаковыми?

              >Это неверно.
              Что именно из того, что я сказал, не верно? А, я там опечатался: некоторые нейроны зоны V1 видят линии определённой ориентации. Значит, это «нейроны бабушки», верно? Есть чёткий интерпретируемый признак для данных нейронов — линия определённой ориентации. Или признаком «нейрона бабушки» может быть только определённый человек? Так таких нейронов в нейросетях тоже нет, конечно, если их специально не создавать.

              > И размытые и четкие линии — это типичные признаки.
              А что — не признак? Формулируйте чётче в статье, тогда не будет таких «странных» вопросов.

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

              >Но есть и другой более общий подход (это мое мнение), о нем я и рассказываю.
              Если ваш подход «более общий», то подход искусственных нейросетей — частный, а значит, должен вполне описываться вашими терминами. Это так?
              Я пока что вижу, что всё наоборот: ваш подход с точностью до переобозначений описывается терминами из теории нейронных сетей.

              >Вообще же, вы, похоже, не прочувствовали разницу между кодом и признаковым описанием.
              Да нет, это-то мне понятно. Мне непонятно, почему вы не считаете нейросети способными оперировать с кодами, как и непонятно преимущество данного представления перед distributed representation общего вида.
                0
                сорян, я немного вклинюсь в ваш диалог
                > вектора из модели word2vec — 300 действительных чисел
                но ведь слов любого языка всего порядка 50000 и их можно закодировать 16 битами
                  0
                  совершенно верно, только вопрос как с этим описание потом работать? только и получится, что писать программу на любимом языке программирования, так как в этом кодировании нет никакой информации кроме этих 50к слов. В этом кодировании нельзя даже связать некую доп. информации и привязать к некому слову (коду). В итоге придется все прописывать руками кодом.
                  0
                  Основное разногласие происходит из-за несогласованности определения «признак». Вот его определение в вики:
                  При́знак в математике, логике — достаточное условие для принадлежности объекта некоторому классу. В менее строгих науках слово «признак» употребляется, как описание фактов, позволяющих (согласно существующей теории и тому подобное) сделать вывод о наличии интересующего явления.


                  Теперь определение «кода»:
                  правило (алгоритм) сопоставления каждому конкретному сообщению строго определённой комбинации символов (знаков) (или сигналов)


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

                  Из вышесказанного следует, что все различие именно в алгоритме формирования код.
                    0
                    Когда код состоит из набора бит, то каждый отдельный бит уже не является признаком.
                      0
                      Что, опять надо начинать сначала?
                      Ок, давайте для затравки поглядим на картинки из https://www.nervanasys.com/accelerating-neural-networks-binary-arithmetic/ и https://arxiv.org/pdf/1602.02830v3.pdf. Особенно, картинку номер 2 из работы. Это, случаем, не ваши «коды»? Когда видеокарты начнут поддерживать бинарные представления на большей скорости, чем вещественные представления, то, при прочих равных, все на них перейдут. Вопрос выбора формата — это вопрос скорости и качества работы.
                      >Основное разногласие происходит из-за несогласованности определения «признак».
                      Точнее, из-за отсутствия определения понятий «признак» и «признаковое описание» в статье вообще.
                      Разве ваш Binary Sparse Distributed Representation под названием «код» — это не набор признаков? Разве то, что делает нейрон в микроколонке — это не выделение признака или признаков?
                      Просто замените в статье «признак» на «элемент кода».

                      >так как если алгоритм теряет часть информации при формировании кода
                      Т.е. в мозгу информация, по вашему, не теряется? Рассмотрите ситуацию объединения двух произвольных кодов в третий — всегда ли вы сможете сделать потом обратное преобразование? Если вы считаете, что да, то у вас никогда не произойдёт обобщения информации. Поэтому потери в Binary SDR должны быть.

                      >, то код (при определенном уровне потерь) нельзя однозначно сопоставить с неким признаком.
                      Разницы с нейросетями я по-прежнему не вижу, потому что нейросети тоже могут работать с распределёнными векторами и для них будут характерны те же свойства, что вы утверждаете для кодов.
                      И вообще, утверждение, что нейросети вычисляют лишь Singular Vector Decomposition — дремучее заблуждение. Если бы было бы так, word2vec бы не смог работать.
                        +1
                        Разве ваш Binary Sparse Distributed Representation под названием «код» — это не набор признаков? Разве то, что делает нейрон в микроколонке — это не выделение признака или признаков?
                        Просто замените в статье «признак» на «элемент кода».

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

                          > Если у вас есть ячейка памяти, которая может принимать разные значения, то признаком чего является ее третий бит?
                          А признаками чего являются значения в векторах word2vec?
                          «мужчина»: [-0.1178 -0.0163 -0. -0.0116 -0.0979 -0.1219 -0.0493 -0.1063 0.064 ]
                          «женщина»: [-0.0756 -0.0133 0.0265 -0.0036 -0.1108 -0.0945 -0.0254 -0.0694 0.057 ]
                          Признаком чего является значение третьего нейрона на выходе первого слоя нейросети?
                            0
                            Семантические вектора строятся так. Предложения разбиваются на пары слов. Получается обучающая выборка в которой содержится инфформация о том, какие слова встречаются совместно. Из этого выделяются факторы. Эти факторы можно получить сетью, а можно методами фактрного анализа. В факторном анализе берутся первые 300 факторов (по величине объясняющей дисперсии), в сети они же получаются на слое ограниченном в числе нейронов. Каждый из факторов можно содержательно трактовать по его факторным нагрузкам, в сети по силе весов к исходным словам.
                            Для «мужчина», «женщина» высокие значения будут в факторе «связанное с человеком» и возможно еще каких-то. Чтобы понять значения весов надо смотреть на другие слова.
                            В фактроном анализе чтобы упростить трактовку используют предварительное вращение базиса, чтобы развернуть факторы максимально вдоль дисперсий признаков. Без вращения базис из факторов работает точно так же, но не интерпретируется.
                            В сети те же факторы могут выделиться без вращения, то есть «размазаться» по разным нейронам. Как и вращение базиса это не влияет на результат работы, но затрудняет интерпретацию.
                              0
                              Я так и не увидел ответа на мой вопрос.
                              Мне кажется, вы уклоняетесь от ответа на него.

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

                              >В факторном анализе берутся первые 300 факторов (по величине объясняющей дисперсии), в сети они же получаются на слое ограниченном в числе нейронов.
                              Это не совсем так, если я правильно понял, к чему вы клоните. Даже в однослойной нейросети из 300 выходов участвует не 300 самых значимых факторов SVD, а больше — уж не говоря про многослойную нейросеть. SVD — глобальное разложение, а нейросеть после выделения глобальных факторов дальше строит локальные факторы, различные для каждой области глобальных факторов — конечно, пока хватит ёмкости хранения в весах.
                              Собственно, доказательство принципиального отличия SVD и нейросети простое: многократный SVD ничем не отличается от однократного, а значит, многослойный SVD не сможет построить XOR. А нейросеть сможет. ЧИТД.

                              Хотите, продемонстрирую ещё одно свойство SDR из word2vec, которое вы тоже считаете уникальным для ваших кодов и волн?
                              Понятия практически не смешиваются при суммировании (конечно, пока длины вектора хватает для хранения):
                              >>> m, r=merge(v, pos=[u'сварщик', u'идёт'], neg=[], n=10, exclude=[])
                              >>> print '--------', pvec(u'NORM SUM', m)
                              >>> print pmerge(r)
                              -------- NORM SUM   : [ 0.0179  0.0265  0.0282 -0.0561  0.0576 -0.0954  0.0009]
                              0.5561 идёт         : [-0.0325 -0.0306  0.1227 -0.019   0.1196 -0.0552  0.019]
                              0.5561 сварщик      : [ 0.0682  0.0836 -0.0663 -0.0931 -0.0043 -0.1356 -0.0172]
                              0.5013 идет         : [-0.0326 -0.0301  0.1441 -0.0587  0.1445 -0.0461  0.026]
                              0.4299 слесарь      : [ 0.0518  0.1014  0.0031 -0.0621  0.0803 -0.0093 -0.0165]
                              0.4217 монтажник    : [-0.012   0.0619 -0.058  -0.0756  0.1095  0.015  -0.0367]
                              0.4009 сантехник    : [-0.0459  0.0997  0.0279 -0.0397  0.0379 -0.0599 -0.0448]
                              0.3975 ремонтник    : [-0.0157  0.1313  0.0023 -0.085   0.0153 -0.0688  0.0043]
                              0.3943 далее        : [-0.1098 -0.0499  0.1062  0.0081  0.0849 -0.0031  0.0502]
                              0.3913 наладчик     : [ 0.0901  0.1067  0.0188 -0.114   0.028  -0.0311 -0.0733]
                              0.3910 начинается   : [-0.0293 -0.0516  0.078   0.0152  0.0845 -0.0339 -0.0755]

                              (у меня тут вектора длины 200, показаны их первые 7 координат)

                              Кстати, подобное «несмешивание» тоже невозможно сделать с помощью 200-координатной SVD намного более, чем для 200^2 различных пар слов.

                              Вот вам весь код примера: https://github.com/buriy/w2v-sdr/blob/master/notebook.ipynb, можете загрузить себе вместе с файлом данных (ссылка есть внутри, 840 МБ) и открыть с помощью jupyter notebook.
                                0
                                Я правильно понимаю, что в word2vec слово (он же признак) кодируется точкой в многомерном пространстве? Если это так-то код в word2vec это признак наличия или отсутствия него слова.

                                Рассмотрим две модели:

                                Первая модель — есть вектор размерностью N. Каждый элемент принимает значение 1 если во входном описание встречается некий признак и 0 в противном. Полученный код остается признаковым описанием.

                                Вторая модель — есть вектор размерностью N. Каждый элемент принимает значение 1 если во входном описание встречается некий признак из набора признаков и 0 в противном. Можно ли назвать полученный код признаковым?

                                Я согласен что есть некая сумбурность в использовании термина «признаковое описание». Но суть не в этом, а том что показываются две идеалистически различные модели обработки информации. В одной ключевым узлом является выделение классов (признаков). А во второй говорится что выделение классов невозможной, точнее стремление к повышению точности работы системы приводит к тому, что колво классов становится равно колво «входных элементов» (либо происходит комбинаторный взрыв) и поэтому нужно работать только с «входными элементами».
                                  0
                                  Обозначим ваши коды массивом codes[]
                                  Пусть элемент принимает значение 1 если в codes для слова на этой позиции стоит 1, иначе 0. Этот код признаковый? А ведь он совпадает с вашими кодами полностью, и с твоей «второй моделью» тоже.

                                  Также см. ответ Алексею ниже.

                                  >Две идеалистические модели
                                  Так всё же идеалистические или встречающиеся в реальности?
                                  Ваша модель описывает реальный мозг или нет?

                                  И даже если описывать идеальные модели — идеадьные нейросети умеют генерировать и обрабатывать коды.

                                  Поэтому, пожалуйста, называйте вашу идеальную модель нейросетей другим словом, чтобы не вводить людей в заблуждение.
                                    0
                                    Пусть элемент принимает значение 1 если в codes для слова на этой позиции стоит 1, иначе 0. Этот код признаковый? А ведь он совпадает с вашими кодами полностью, и с твоей «второй моделью» тоже.


                                    я правильно понял, что ответ «да, в обоих случаях коды получаются признаковыми»?
                                      0
                                      Да. Любой в мире код — признаковый в смысле «второй модели», если хватает памяти на таблицу преобразования, написанную в массиве codes.
                                        0
                                        Именно в этом мы и разошлись. Я считаю, что однозначная таблица преобразований на практике (в основном) встречаются лишь в «лаборатории». А в «жизни» намного больше таблиц неоднозначного преобразования и очень незначительное количество однозначных. В лингвистике эту таблицу, например, называют список Сводеша, там всего 200 понятий -)

                                        Так вот, когда отсутствует однозначное преобразование кода в признаки, то код перестает быть признаковым описанием.
                                          0
                                          Но всё нейросетевые модели для NLP: что SyntaxNet, что модели для sentiment analysis, что новая версия google translate у вас в кармане, что YouTube при поиске похожих роликов, что state-of-the-art научные разработки — все используют word2vec или его аналоги типа Glove. То есть это более чем практический инструмент.
                                          Я не очень понимаю, причём тут неоднозначность и однозначность преобразования. Даже на уровне отдельных слов — скажем, слово bar может переводиться как «бар» (ресторан) или «плитка» (шоколада), значит, однозначности в практических задачах всё равно не существует.

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

                                          этого совсем не понял, «вторая модель» показывает когда код перестает быть признаковым описанием.
                                            0
                                            А, пардон. Тогда так:
                                            Любая нейросеть — не признаковая в смысле «второй модели», если ей хватает памяти на таблицу преобразования, написанную в массиве codes.
                                        0
                                        Возьмем набор из 1 000 000 понтий. Сопоставим каждому случайный бинарный хеш-код длиною 100 бит и 10 едениц на код в случайных позициях. Единица в какой-либо позиции в таком коде не является признаком. Хотя она и есть только у десятой части всех понятий, она все равно будет общей для порядка 100 000 понятий. Внешне она будет чаще других срабатывать на понятие в котором она есть, но при этом не говорят, что она соответсвует какому-либо признаку.
                                          0
                                          А почему единица не является признаком? Где граница?
                                          Представьте, что ваши хеш-функции реализует нейросеть. В одном случае — искусственная, во втором — ваша модель.
                                          Что-то поменялось?
                                            0
                                            Любое понятие можно свести к слову «объект». Уточнения служат для конкретизации смысла.
                                            Единицу в случайном коде можно назвать признаком кодируемого понятия, вопрос трактовки.
                                            Но есть принципиальная разница между признаком и кодом. Достаточный набор единиц кода одозначно гарантирует идентификацию кодируемого понятия. Набор признаков этого не дает за исключением вырожденного случая, когда исходный признак и есть само понятие.
                                              0
                                              Случайный набор признаков этого не обязан давать.
                                              А 100 различных хеш функций — дают почти всегда (99,9999...%).
                                              Считайте, что каждый бит кода — хеш-функция, и она реализована нейроном ИНС.
                                              Кстати, в случае word2vec — нейронами с числом входов равным количеству различных слов в словаре.
                                              Это ничем не отличается от хранения полной таблицы кодов, только по-прежнему называется нейросетями.
                                            0
                                            Это признак вхождения этого слова в группу слов, соответствующий бит хэшей которых равен единице ;)
                                        0
                                        Представление в факторах — это линейная комбинация. Несколько «слоев» линейных комбинаций могут быть заменены одним. В нейронной сети есть пороговая функция, которая нарушает линейность. За счет этого появляется смысл в многослойности.
                                        При применении факторного анализа выделяются ортогональныее факторы, что далеко не всегда удобно для реальных данных. Но это следствие линейности модели. Только ортогональные факторы можно свободно складывать. В коррелированных факторах при их сложении общая составляющая учитывается дважды.
                                        Нейронная сеть может себе позволить коррелированные факторы. «Неправильный» результат их сложения «гасится» насыщением пороговой функции. За счет этого правильно обученная многослойная нейронная сеть приобретает большую выразительную мощность по сранению с факторным анализом. В том числе появляется и XOR, который невозможен в линейной модели.
                                        Но сама суть реакции нейронов остается очень близка к реакции факторов. Поэтому уместны многие аналогии. В том числе и трактовка реакции нейрона, как реакции на определенный признак.
                                        За счет того, что нейроны могут выделять косоугольные факторы их реакция может буть совместной. Но при этом они не формируют код, а создают признаковое описание в котором часть признаков коррелирована.
                                        Если признаки, участвующие в описании двух явлений различны, то их можно сложить и получить корректное описание комбинации явлений. Но как правило уже после двух-трех наложений начинаются сложности с интерпретацией. Наложение кодов позволяет формировать свободное от коллизий описание, состоящее из нескольких десятков понятий. Собственно такое наложение несет совсем другой смысл и другую математику.
                                          0
                                          Меня крайне беспокоят ваши «приближенные» рассуждения, которые запросто могут привести вас к неправильным выводам.
                                          Word2vec выше — это признаковое описание или коды?
                                          Напоминаю, что таблица получена с помощью нейросети.
                                          Я не считаю, что между кодами и признаковым описанием есть какие-то принципиальные отличия: одно постепенно переходит в другое.
                                          Давайте вспомним теорию кодов и понятие дистанции между закодированные символами.
                                          Код с дистанцией 1 — бинарное описание. Код с дистанцией 2 — признаковое one-hot описание. Код с большей дистанцией — не признаковый по вашему же определению. У вас код со средней дистанцией 10-15 (около 2-3% от размера слоя — практика для SDR). Такой код вполне по силам создать нейросети на практике, поэтому я считаю, что вы сами заблуждаетесь и вводите других в заблуждение. Неоднократно доказано и показано, что нейросети умеют делать local sensitive hashing. А вы мне рассказываете про «примерно факторный анализ», который на это не способен по вашим же словам. Не видите противоречия?
                                          Про отсутствиие у вас коллизий — вы тоже выдаете желаемое за действительное.
                                          1) Из того, что теоретически существует код с дистанцией 10-15 без коллизий, не значит то, что коллизий не будет на практике.
                                          2) Важность и необходимость отсутствия коллизий необоснована. Как в теории, так и для решения практических задач.

                                          Возможно, что в этом действительно что-то есть, и возможно в этом действительно преимущество модели мозга. Но я вас призываю для начала стать объективным: преуменьшение возможностей нейросетей выгодно оттеняет вашу модель, но вас не красит.
                                            0
                                            У меня нет ни слова ни о том, что нейросети — это плохо, и ничего о том, что моя модель лучше. В некоторых задачах, например, распознавание достаточно простых образов моя модель и сверточные сети дают одинаковый результат. Причем это происходит от того, что по сути они делают одно и то же. Но сверточные сети знают только правила геометрических преобразований и плохо умеют сворачивать то, что не приводится к картинке. И вот тут мой подход действительно начинает давать значительно лучший результат. Но до описания этого мы пока не дошли. Когда дойдем, тогда и будет разговор о преимуществах.
                                            Сейчас разговор идет только о различиях, почему эти различия дают преимущество будет понятно несколько позже.
                                            Кроме того идет разговор о биологической достоверности, но он не связан с критикой нейросетей в плане их возможностей.
                                              0
                                              Зато у вас есть слова о том, что нейросети могут строить только признаковые описания. Я вас убедил, что это не так?
                                              >Ничего о том, что моя модель лучше
                                              А как же список принципов 1-6 ближе к концу статьи?
                                              >Но сверточные сети… мой подход лучше…
                                              Сети бывают не только сверточные. Архитектура зависит от задачи, и выбирается с учетом достигаемого качества, скорости работы и использования памяти. Не имеет смысла говорить только о качестве в отрыве от всего остального.
                                              Я думаю, возможно, имело бы скорее смысл говорить об использовании вашего подхода для построения новой архитектуры нейросетей, нежели о противопоставлении.
                                                0
                                                О как! Я то думал, что убедил вас.

                                                Список различий, но не преимуществ.

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

                                                  >Любая программа — нейросеть
                                                  Давайте не будем про тьюринг-полноту.
                                                  Я не зря беру лишь практически используемые нейросети.
                                                    0
                                                    для хранения таблицы перекодировки


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

                                                      >что не нужно хранить такую таблицу
                                                      Давай попробуем порассуждать логически. Пусть на входе 1-hot представление слов (для простоты рассуждения). Если не 1-hot — то можно сделать преобразование, и ИНС и ваши коды умеют делать такие преобразования.
                                                      Случай 1. Вот у тебя есть известное слово. Откуда ты узнаешь, какие битики устанавливать в единичку? Где-то эти единички хранятся — наверное, в связях между нейронами и в параметрах активации нейронов.
                                                      Случай 2. Вот у тебя есть новое слово, которое тебе не встречалось.
                                                      Что ты будешь делать, чтобы получить для него описание в своей модели? Где-то должны быть связи между нейронами, которые породят для него единички.

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

                                                        По первому, базовый элемент активации ионные каналы, все остальное лишь следствие их работы.

                                                        По второму, в модели которую описывает Алексей для запоминания нового слова нет связей между нейронами которые порождают единички. Единички порождаются геометрией пространства (по сути), а активация нейроны это уже следствие.

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

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

                                                            Попробую описать на примере, есть широкий детектор — реагирует на угол в диапазоне 180 градусов. У этого детектора поле детектирования равно R. Так вот, если взять только один детектор, то можно определить «место» (с точность до R), но нельзя сказать какой угол в сигнале (точность в 180 градусов). А вот если взять решетку из таких детекторов (каждый с различным диапазоном, но все по 180 градусов), то точность определения «места» сигнала падает, а точность определения угла повышается.

                                                            Однозначное сопоставление с таким детектором никогда не получить в принципе.
                                                  0
                                                  у меня не сходится
                                                  Зато у вас есть слова о том, что нейросети могут строить только признаковые описания.

                                                  и
                                                  Любой в мире код — признаковый в смысле ...


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

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

                                                звучит как «была использована магия». Детали очень важны! Что именно и как формирует эту таблицу?

                                                Давайте вспомним теорию кодов...

                                                Не пойму причем тут расстоянием Хэмминга. Вопрос в другом, есть множество признаков P и множество кодов C. Можно ли говорить, что множество C является признаковым если есть однозначное сопоставление между C и P и если такого сопоставление нет?

                                                Единственная отдаленная аналогия приходящая на ум это упорядоченное и неупорядоченное множества (возможно и не удачная). И там и там множество, но математика получается различной в силу различий в свойствах этих множеств.

                                                По поводу Word2vec у меня сразу возник вопрос: Word2vec — это математическая модель некого векторного пространства где определены операции "+" и "-". А какая операция когда применяется? На вопрос можно дать множество ответов и в этом проблема этой модели.
                                                  0
                                                  Почитайте про word2vec в интернете. Там есть ответы на ваши вопросы. Но если останутся вопросы — пишите, я отвечу. Просто долго всё описывать. Мои контакты — в профиле.
                                                    0
                                                    Эти вопросы как раз и возникли после ознакомления с word2vec в интернете -)

                                                    И мне кажется, что я не задал вопрос, а поставил вопрос и дал на него ответ показав слабое место word2vec.
                                                      0
                                                      А, понял.
                                                      >Можно ли говорить, что множество C является признаковым
                                                      Вы придумали это определение, вам и решать, что оно в себя включает. Но если хотите замкнуть в него нейросети, то и ваши коды туда попадут, потому что вычислительно модели эквивалентны — одну можно представить через другую.
                                                      >Word2vec — это математическая модель некого векторного пространства где определены операции "+" и "-". А какая операция когда применяется? На вопрос можно дать множество ответов и в этом проблема этой модели.
                                                      На практике — ни та, ни другая. Обычно word2vec используется для преобразования слов во внутреннее распределённое представление, а потом, если нужно, для обратного преобразования в конце.
                              +1
                              Что вас так взбудоражило? Написанная статья не претендует на полное описание всех достижений компьютерных нейронных сетей, а скорее продолжает цикл статей о биологической работе мозга и описывает, насколько я вижу, видоизмененную модель нейронных сетей.
                              Не надо путать, нейронные сети, как способ решения задач классификации и регрессии, которые являются чисто математическими-алгоритмическими задачами и для которых сегодня подобия реальных (биологически) нейронных сетей показывают хорошие результаты, с биологической сетью. У биологической сети есть 2 главные задачи, выживание и продолжение рода, из которых следует задачи защиты, поиска еды, поиска партнера. Для биологической сети, задачи классификации и регрессии всего лишь средства, а никак не сама цель.
                              Не надо заниматься буквоедством, ведь мы понимаем как работают математические модели более-менее и совсем еще не понимаем как и зачем работает мозг.

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

                                  Поскольку IT-нейронные сети, вовсе не нейронные, то для каких то задач нужны другие механизмы.
                                  Один в один эмулировать «живые нейроны», как конечная цель, а не как промежуточная — бессмысленно, потому что зачем, ведь естественные НС «бабы еще нарожают». А нам нужна лучшая версия нейронов или рафинированная версия нейронов. Под лучшей версией я понимаю вообще не обязательно подобие НС.
                                  Как поиск каких то новых механизмов, можно исследовать что угодно.

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

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

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

                                    Я бегло (да, нехорошо так делать, но все-таки) прочитал вашу беседу, и мне показалось, что это лишь терминологический спор. Может вы тогда сами напишете статью в чем Алексей принципиально не прав?
                                      +1
                                      Может вы тогда сами напишете статью в чем Алексей принципиально не прав?

                                      поддерживаю
                                        0

                                        Лично я не знаю, что такое нейросети и не хочу знать. Есть язык Prolog. Добавляем градуальность, циклы и весовые коэффициенты. Бэктрекинг и отсечения уже есть. И решаем любую задачу.

                                        +1
                                        Я уже в комментариях всё написал, и уже на четвёртый круг пошёл, скоро на уровень детсада спущусь уже — всё равно меня авторы не понимают или не хотят понимать.
                                        Так какой смысл описывать это ещё раз в виде статьи людям, которым это не нужно и которые этим не будут заниматься на практике?
                                        Я лишь защищаю незаслуженно оболганные нейросети — а клевете на них посвящена большая часть статьи.
                                        Алексей ввёл термин «признаковое описание», и утверждает, что все нейросети — это признаковое описание (правда, в одном месте — с пометкой «как правило»), но коды Алексея — не признаковое описание.
                                        Более того, даже с этой пометкой Алексей не прав — потому что нейроны в нейросетях умеют быть детекторами более чем одного признака или одной группы признаков.
                                        Возьмём нейрон f = bool (x1+x2+x3+x4 >= 2) — очевидно же, что он умеет детектировать пары (x1, x2) и (x3, x4). Без этого свойства нейросети просто не могли бы работать так хорошо.
                                        Но даже если нейроны — это «признаковое описание», и этот термин значит что-то другое, то коды Алексея, формируемые в его конечном автомате — это тоже признаковое описание, например, потому что на каждый его конечный автомат можно построить соответствующую ему нейросеть, ведь с помощью нейросети можно построить любую функцию, в том числе и его конечный автомат.
                                        В итоге, автор выводит 6 принципов, в которых нейросети различаются от его кодов.
                                        Но принципы 1-4 зависят от «признакового описания». Я показал ошибку автора.
                                        Принцип 5 — просто не имеет серьёзного практического смысла, но если пытаться найти такой смысл, то можно заявить, что у Алексея в алгоритме тоже есть аддитивность, только она бинарная — прибавление или убавление единицы.
                                        Принцип 6 — снова вероятно заблуждение, но вопрос более сложен и нужно его изучать более детально, чтобы понять наверняка. Я слегка коснулся его в комментариях.
                                          +1
                                          Алексей ввёл термин «признаковое описание»

                                          Это не он сделал, этот термин существует давно уже (вики)

                                          очевидно же, что он умеет детектировать пары (x1, x2) и (x3, x4)

                                          мне это не очевидно, как именно нейрон (в некой математической модели) начинает это делать?

                                          формируемые в его конечном автомате — это тоже признаковое описание

                                          почему это не так написал выше (показав что нет точно сопоставления код — признак)

                                          в том числе и его конечный автомат

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

                                          Но принципы 1-4 зависят от «признакового описания». Я показал ошибку автора.

                                          Либо свою ошибку, пока слово одного человека против слова другого.

                                          прибавление или убавление единицы

                                          это совсем голословное утверждение, нет в моделе Алексея таких операций
                                            +1
                                            Так может с вашими размышлениями проблема, если никто вас не понимает? Я вот тоже решил перечитать то, что вы написали, в половине случаев вообще не понял о чем вы говорите. Вот конкретный пример —
                                            «Возьмём нейрон f = bool (x1+x2+x3+x4 >= 2) — очевидно же, что он умеет детектировать пары (x1, x2) и (x3, x4). Без этого свойства нейросети просто не могли бы работать так хорошо.»
                                            у меня, как у математика, от такой фразы просто волосы дыбом встают, насколько она некорректна.

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

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

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

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

                                              Подтвердите или опровергните справедливость каждого утверждения здесь:

                                              Посмотрим на получившуюся сеть в разрезе сформулированных ранее шести принципов классической нейронной сети:

                                              Принцип 1. Каждый нейрон – это детектор некого свойства.
                                              Не выполняется. Выходные нейроны не являются нейронами бабушки. Один и тот же нейрон срабатывают на разные признаки.
                                              Принцип 2. Информация в нейронной сети – это признаковое описание.
                                              Не выполняется. Выход сети – это код понятия, а не набор признаков. Вход сети также может работать с кодами, а не с векторами признаков.
                                              Принцип 3. Нейронная сеть, как правило, – это преобразователь признаковых описаний.
                                              Не выполняется.
                                              Принцип 4. Количество нейронов в сети определяет число признаков, с которыми может работать эта сеть.
                                              Не выполняется. Выходной слой, содержащий сто нейронов, при кодировании сигнала десятью активными нейронами может отобразить 1.7х1013 различных понятий.
                                              Принцип 5. Обучение сети – это настройка весов соединяющих нейроны связей.
                                              Не выполняется. Воспоминания имеют «привязку» к нейронам, но никакого адаптивного изменения весов не происходит.
                                              Принцип 6. Конечность обучения. Дилемма стабильности-пластичности.
                                              Не выполняется. Как бы не была обучена сеть ее можно всегда дообучить просто добавив новые воспоминания. При добавлении не требуется учитывать скорость обучения. Разрушения старой информации не происходит. Кроме того, новая сеть способна на «однострельное обучение». Единичный опыт в любой момент обучения создает способность узнавать соответствующее явление. В отличие от традиционных сетей не требуется многократного повторения, так как нет процедуры итерационной настройки весов нейронов-детекторов.
                                    0

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

                                      0
                                      Спасибо. Поправил.
                                      +1
                                      Пора бы заменять термин «Искусственные нейронные сети» на что-то вроде «многослойный экстраполятор».
                                      Потому как модель перцептрона имеет к отношение к поведению биологического нейрона больше историческое, чем реальное.
                                        0

                                        А у вас есть какая-нибудь простая программа, которая, скажем, сравнивает 2 изображения с прямой и повернутой буквой "А" и выдает уровень схожести?

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

                                            Если чуть серьёзнее, очень хотелось бы услышать ваши мысли по поводу воспитания и развития детей, в свете развития их нейросетей и улучшения микроколонок. У вас ведь есть дети? Вы их обучали больше полагаясь на автоэнкодеры или с помощью учителя? Если бы дети появились сейчас, после более глубокого понимания работы мозга, что-то изменили бы в их обучении, для развития мозга?
                                              0
                                              Будет большая часть о формировании эмоций. Основные идеи есть в этом видео. Но это о том какая сформируется личность. Ваш же вопрос скорее о том как сформировать ребенка более умным. Похоже, что это связано с многообразием доступных ему контекстов. Тут необходимо множество обучающих примеров с разными взглядами на одно и то же. Давать такие примеры только со стороны родителей тяжело. Скорее надо создать у ребенка желание самому получат такой опыт, то есть максимально простимулировать его любопытство и жажду новых знаний. А вот о том как это сделать и какие этим управляют механизмы и сказано в видео, которое упомянуто выше.
                                          0
                                          можно при необходимости «на лету» добавлять новые нейроны, но это требует особого подхода к обучению и связано с существенными сложностями.
                                          Сети потребуется «сон», чтобы привести себя в порядок?
                                            0
                                            image
                                            Здесь некоторые цифры не различит и человек. Сеть должна просто выучить как выглядит?

                                            А вот тут почему образ не «уменьшается» ещё дальше, чтобы сравнивать всего три признака — \ / и |?
                                            image
                                              0
                                              Чтобы перейти к другому масштабу и сравнивать три признака нужна многоуровневая архитектура. В статье был простой одноуровневый пример.
                                              0
                                              Извините, но не совсем понятно что вы хотели сказать этой частью. Что многослойные искусственные нейронные сети не соответствуют реальным нейронным сетям? Так в этим направлении наука давно уже продвинулась, на сколько мне известно (хотя я далеко не специалист в данной области). Возьмем, хотя бы HTM. Может быть стоит сравнивать со свежими наработками? Не совсем понятен момент с признаками, о котором спрашивали выше: что вы понимаете под словом признак? И возвращаясь опять к пресловутым «нейронам бабушки»: в любом случае, объект как-то нужно кодировать. Правильно я понимаю что в Вашем случае это будут «миниколонки бабушки»? И если выкинуть одну из миниколонок, то уникальный рисунок измениться и мы потеряем «ту самую бабушку»?
                                                0
                                                Миниколонки — это процессоры контекста. Бабушка — это воспоминание (набор воспоминаний). Воспоминания дублируются в каждой миниколонке. Если выкинуть одну из миниколонок, то мы не поймем, что имеем дело с бабушкой если информация будет требовать трактовки именно в этом контексте.
                                                  0
                                                  Если позволите, то я напишу свои вопросы в виде списка, чтобы легче было на них отвечать:

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

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

                                                      Ну в принципе тогда может быть «нейрон-не-совсем той бабушки» как аналог Вашего подхода?

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

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

                                                      За счет этого получается работать с информацией независимо от временного сдвига и других инвариантов. Спайковые сети и HTM работают с аналоговой информацией и в общем случае не умеют работать с инвариантами


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

                                                У меня пара вопросов:
                                                1) Как бы вы объяснили, почему младенцы сначала учатся фокусировать взгляд на движущихся объектах, а не статических? Почему они лучше учатся по динамике, чем по статике (первая попавшаяся статья из Dev. Psychol.)

                                                2) Про структуру воспоминаний. Как в вашей модели воспоминания встраивают в себя время? Т.е. воспоминиание у людей имеет структуру типа «Я помню, что сначала поел, потом стал собираться на работу, и потом понял, что сегодня выходной. И затем я погладил кота». Похоже на сжатое предстатвление некоторого динамического процесса — его основных вех. Как такую штуку «завернуть» в один «код».

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

                                                Самое читаемое