Как стать автором
Обновить
6
0

Пользователь

Отправить сообщение

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

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

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

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

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

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

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

Для начала, важно понимать, что нейрон - это, по сути, условие, которое представлено в виде взвешенной суммы с функцией активации главным образом для того, чтобы это условие можно было диффиринцировать. Поэтому будем рассматривать не нейрон, а обычное условие (хотя подобные расчёты, вероятно, можно было бы провести и для обычного нейрона, только это будет куда сложнее - там уже не обойтись без мат. анализа). Допустим, у нас есть два нейрона-условия n1 и n2, которые имеют вид:
n1 = a1 || a2
n2 = b1 || b2

Если мы с помощью условий n1 и n2 построим новое условие вида n3 = n1 & n2, тогда его можно будет представить в следующем виде:
n3 = n1 & n2 = (a1 || a2) & (b1 || b2) = (a1 & b1) || (a1 && b2) || (a2 && b1) || (a2 && b2)

Как можно заметить, количество дизъюнкций условия n3 равно количеству дизъюнкицй вложенного условия n1, умноженному на количество дизъюнкций вложенного условия n2. Формально, можно записать вот так:
d(n3) = d(n1) * d(n2)

Одна дизъюнкция - это один объект во входных данных, например, один объект на изображении. Таким образом, если мы сделаем условие n1, которое отличает 15 объектов на изображении, и условие n2, которое также отличает 20 объектов на изображении, то условие n3 будет отличать уже 240 объектов, то есть происходит перемножение. Простая вложенность позволила в геометрической прогрессии увеличить количество распознаваемых объектов. И здесь мы рассмотрели только один уровень вложенности условий, а в современных нейронных сетях их может доходить до 50 (это уже получается 50 переменожений, что сравнимо с 10^50).

Таким образом, условие нейронной сети может содержать до 10^50 дизъюнкций, то есть распозновать столько объектов - и это не предел. Вот почему нейронные сети такие эффективные.

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

Я не перепутал, просто вы не поняли, что я имел ввиду. На самом деле процесс анализа и взятия данных из памяти эквивалентен. Вот пример:

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

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

Т.е. хранение в памяти человека информации и данных иное, чем знаний.

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

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

Странное определение. Почему смысл никак нельзя закодировать? Я могу доказать, что это не так.

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

Возьмём упрощённый пример - представим, что у нас есть некоторый файл, который кодирует изображение в определённом формате, например, PNG. Пусть на компьютере 1 будет содержаться программа, которая может раскодировать формат PNG и выводить на экран изображение, которое хранится в файле. Также, предположим, что у нас есть компьютер 2, который точно также может раскодировать файл и вывести хранящиеся в нём изображение, только вот умеет он работать лишь с форматом JPG.

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

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

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

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

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

С учётом того, что общение будет на собственном языке, то и в качестве хранилища может быть обычный key-value с поправками на поиск и вес. 

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

Тут самое ключевое это скорость записи и поиска, потому что в процессе воспоминаний будет не условные 3-4 вопроса (вы сильно упростили в статье когнитивный процесс), а сотни 2-3, а на запись и того больше.

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

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

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

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

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

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

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

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

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

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

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

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

  3. Данные - это, на самом деле, та же последовательность бит. То есть данные также являются информацией.

Сеть-память может сохранять в себя любую последовательность информации. Иероглифы (зрительная информация), предложение (последовательность иероглифов) и смысл предложения - это информация в разном виде, которая вся может быть представленна в виде последовательности бит. Так как всё это разные виды информации, всё это может единым образом быть записано в сеть-память, без необходимости разделения на три отдельные составляющие.

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

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

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

Также существуют эксперементы, подтверждающие наличие кратковременной и долговременной памяти в мозге человека. Есть известная история пациента по имени Генри Молисон, у которого работала кратковременная память, но вот запоминание в долговременную не происходило. Вот вики статья про него: Молисон, Генри — Википедия (wikipedia.org)

Более подробно на эту тему также снимал видео канал MyGap: Как создаются воспоминания (youtube.com)

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

Ведь чем сильнее необходимо запомнить новую информацию, тем больше сеть‑память будет забывать то, что она запомнила раньше и тем дольше будет происходить процесс запоминания

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

1. Если сделать высокую интенсивность запоминания, то одну выборку сеть-память сможет сразу запомнить на 100% - это будет дольше слабого запоминания, зато качество запомненной информации будет на высоте (под слабым запоминанием я имею ввиду меньшую точность запоминания конкретной выборки, например, не 100% информации, а 40%). Так как сеть запомнила сразу много информации, это значит, что пришлось избавиться от бОльшего количества старой информации, чтобы вместить новую - сеть слегка потеряля память.

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

На самом деле, как мне кажется, в человеческом мозге есть похожий процесс "интенсивности" запоминания информации. Вот пример. После просмотра 15-ти минутного видео человек не может рассказать 100% информации, изложенной в видео - если бы это было так, мы бы могли запомнить каждое сказанное слово и рассказать текст видео на память, как если бы читали его с бумажки - слово в слово. На деле же, после просмотра видео человека запоминает лишь часть информации, скажем, 30% - основную суть запомнили, а вот каждое слово не запоминали (да это особо и не нужно). Здесь приведённые проценты - аналог интенсивности запоминания.

Можно задаться вопросом, почему в мозге человека интенсивность запоминания лишь 30%, а не 100%? На самом деле это и так понятно - ведь в противном случае память человека быстро засорится лишней информацией, а каждая новая информация в мозге человека запоминается за счёт того, что была забыта какая-то старая информация. Инимы словами, если бы человек запоминанал всё с интенсивностью запоминания 100%, его память была бы очень точной, но маленькой - для повседневной деятельности это не имеет смысла.

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

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

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность