Pull to refresh

Comments 77

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

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


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

Эта статья несколько о другом. Она о том, что обратное распространение в искусственых нейронных сетях можно заставить работать без того чтобы связи симметричного распространяли сигналы в обе стороны. Это ничего не говорит о том как работают биологические нейроны.
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.
[...]

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

Да именно так. При этом в статье в мозг не лезут, а только показывают вариацию BP без возможности симметрично распространять сигнал по связи как туда, так и обратно. Считалось, что если связи в мозгу не могут обеспечить симметрию (веса работают в одну сторону), то и искать BP в коре смысла нет. Статья говорит, что искать стоит.
>Принцип 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/


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

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

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

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

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

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

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

Нейросеть из двух слоёв по два нейрона умеет делать 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 признаков для конкретного слова может содержать несколько высоких значений. Они описывают смысловые области к которым близко это слово. Но это не код. Код — это номер, присвоенный этому слову и ничего более.

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

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

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

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

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

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

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


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


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

Из вышесказанного следует, что все различие именно в алгоритме формирования код.
Когда код состоит из набора бит, то каждый отдельный бит уже не является признаком.
Что, опять надо начинать сначала?
Ок, давайте для затравки поглядим на картинки из 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 бы не смог работать.
Разве ваш Binary Sparse Distributed Representation под названием «код» — это не набор признаков? Разве то, что делает нейрон в микроколонке — это не выделение признака или признаков?
Просто замените в статье «признак» на «элемент кода».

Вы все время не о том. Бинарный хеш-код — это не набор бинарных признаков. Если у вас есть ячейка памяти, которая может принимать разные значения, то признаком чего является ее третий бит?
Подождите примеров, возможно, станет понятнее.
>Бинарный хеш-код — это не набор бинарных признаков.
Ок. Тогда где вообще бывают эти признаки, про которые вы писали?
В нейросетях выходной вектор на слое — это набор признаков или нет?
Я всё ещё пытаюсь понять, что вы называете «признаком», вот и всё.
Думал, что так: «то, с чем работает нейросеть — это признаки». Но нет, не сходится.
Получается, у вас мнения по поводу того, что такое «признак», даже с 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 ]
Признаком чего является значение третьего нейрона на выходе первого слоя нейросети?
Семантические вектора строятся так. Предложения разбиваются на пары слов. Получается обучающая выборка в которой содержится инфформация о том, какие слова встречаются совместно. Из этого выделяются факторы. Эти факторы можно получить сетью, а можно методами фактрного анализа. В факторном анализе берутся первые 300 факторов (по величине объясняющей дисперсии), в сети они же получаются на слое ограниченном в числе нейронов. Каждый из факторов можно содержательно трактовать по его факторным нагрузкам, в сети по силе весов к исходным словам.
Для «мужчина», «женщина» высокие значения будут в факторе «связанное с человеком» и возможно еще каких-то. Чтобы понять значения весов надо смотреть на другие слова.
В фактроном анализе чтобы упростить трактовку используют предварительное вращение базиса, чтобы развернуть факторы максимально вдоль дисперсий признаков. Без вращения базис из факторов работает точно так же, но не интерпретируется.
В сети те же факторы могут выделиться без вращения, то есть «размазаться» по разным нейронам. Как и вращение базиса это не влияет на результат работы, но затрудняет интерпретацию.
Я так и не увидел ответа на мой вопрос.
Мне кажется, вы уклоняетесь от ответа на него.

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

Articles

Change theme settings