Найти тему
Одиночная палата

Программирование для непрограммиста. Часть 4. Мысленная

Оглавление
Ламповый компьютер Harwell Dekatron
Ламповый компьютер Harwell Dekatron

Содержание

Часть 1. Экселька

Часть 2. Надумываем задачу

Часть 3. Среднее по больнице

Где живет мысль?

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

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

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

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

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

С нейронами такая же петрушка - нейроны не сами, а связи между ними, представляют из себя систему с нелинейным возрастанием сложности. Два нейрона умеют только поочередно передавать друг другу один сигнал. Три уже могут переплестись таким образом, что будут представлять из себя простейший логический оператор. Где-то около трехсот хватает что бы управлять червем нематодой. У таракана один меганейрон мощности. Мышам достаточно 100 миллионов. У нас 90 миллиардов. И это не считая связей, которых может по быть нескольку тысяч каждого нейрона с каждым. В эксельку не поместится полностью даже таракан. Но нам так много и не надо. Что бы оценивать среднее из 12 чисел хватит что-то порядка 30 штук.

Всего несколько десятков одинаковых между собой элементов смогут (а может и не смогут) решить задачу, которая и для человека, на первый взгляд, покажется не самой простой, если не применять счет. Сможете ли вы, со своими сотнями триллионов синапсов в голове, сходу сказать какое из чисел 910, 153, 28, 679, 9, 278, 308, 99 ближе всего к среднему значению? Нет? Вся хитрость, в том что вы не тренировались. А еще вам не помогают. А вот так: 9, 28, 99, 153, 278, 308, 679, 910? Уже легче? А если представить что это гири на весах? 308? Ничего не считали? Можете теперь проверить. И прикинуть, насколько легче вы бы смогли решить следующий похожий пример. Этот пример призван проиллюстрировать, что несмотря на всю мощь нашей головы, имеет смысл подготовить и переформулировать задачу таким образом, что бы ее было легче решить. А потом еще и потренироваться на каких-то проверяемых данных.

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

Функция активации

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

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

Нейрон, как и утюг, оперирует старомодными зарядом, напряжением и силой тока. На дендритах образуется разности потенциалов, в сумме выдавая некое напряжение внутри клетки, а на выходе по аксону бежит совершенно нормальный электрический ток. Однако, в теле нейрона происходит одно действительно поразительное явление - аналого-цифровое преобразование. Каким-то, доселе до конца не изученным, образом нейрон "подсчитывает" сумму всех принимаемых на входе сигналов и "принимает решение" пустить разряд в аксон или все же пока еще нет. То есть буквально выход нейрона имеет два отдельных определенных состояния "вкл" и "выкл". С какой силой происходит "вкл" на самом деле уже не так важно. То есть нейрон квантует свое состояние до логических "ЛОЖЬ" и "ИСТИНА" - до 0 и 1.

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

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

Продолжение следует...