Pull to refresh

Что чувствует программа?

Reading time10 min
Views2.2K

Предисловие


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

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

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

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

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

Органы чувств


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

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

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

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

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

Вроде бы все круто – оперативная память уже не растет в арифметической прогрессии, а имеет фиксированный размер. Но что делать, когда новые узлы перестают поступать? Продолжать обрабатывать старые? Это равносильно тому, как если бы вы собирались лечь спать и, выключив телевизор и закрыв глаза, продолжали бы слышать последние аккорды и видеть замерших на экране исполнителей. Что-то здесь не так! Что-то мы упустили…

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

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

Если информация о раздражителе обновляется быстро и пришел черед перезаписывать старый узел, но срок его жизни еще не вышел, то он все равно перезаписывается. Если же информация обновляется медленно или вообще перестает поступать, то после срабатывания таймеров узлы освобождают оперативную память (направляются в постоянную или в /dev/null).

Ну вот, теперь мы проследили путь информации от органов чувств и до памяти.

Мотивации и эмоции


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Послесловие


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

И напоследок у меня есть вопрос к тем, кого заинтересовала данная статья. Здесь было рассмотрено общее поведение органов чувств, а так же приведен пример одного из них – командная строка. А какие еще «органы чувств» можно реализовать на такой платформе?
Tags:
Hubs:
+5
Comments35

Articles