Нейронный ликбез.
Немного теории. Человеческий мозг содержит порядка нескольких миллиардов вычислительных элементов, называемых нейронами. Нейроны связаны между собой в сложную сеть. Эта сеть отвечает за все явления, которые мы называем мыслями, эмоциями, познанием и так далее, то есть на физиологическом уровне образует то, что называется на самом деле нервной системой, в свою очередь совокупность явлений в нервной системе можно назвать психикой, люди же обычные, особо не обремененные научной пунктуальностью, часто именуют последнюю словом "интеллект". Каждый нейрон состоит из трех основных частей: самой клетки (сомы) и двух типов древовидных отростков - дендритов (их обычно очень много) и аксонов (обычно он один). Вообще-то, для нервной системы позвоночных характерны мультиполярные нейроны. В таком нейроне от клеточного тела отходят несколько дендритов и аксон. По правде говоря, структура, размеры и форма нейронов сильно варьируются. Например, периферические чувствительные нейроны вовсе не идентичны нейронам, составляющим мозг. Дендриты выполняют роль своеобразных "входов" для нервных импульсов, а аксон - "выхода".
Скорость передачи нервных импульсов сравнительно мала, но несмотря на это скорость обработки информации в мозге огромна. Достигается это за счет того, что внешняя информация распределяется по множеству нейронов и обрабатывается ими одновременно, то есть реализуется максимально распараллеленная обработка информации. Но это все относится к вопросам биологического устройства, нас же больше интересует искусственная модель нейрона, та модель, которая была предложена учеными.
Общие принципы работы модели нейрона можно описать следующим образом: на входы нейрона поступают нервные сигналы от других нейронов. Каждый вход характеризуется собственным некоторым весовым коэффициентом, определяющим важность получаемой информации. Вдаваясь в грубую аналогию, весовой коэффициент объясняют как своего рода сопротивление (резистор, если нервный сигнал рассматривается как аналоговый электрический сигнал), оказываемое поступающему на конкретный вход нейрона нервному сигналу. Предварительно устанавливая величину такого "сопротивления" или же динамически изменяя его величину по определенным правилам в процессе работы нейронной сети, осуществляется как бы задание степени значимости информации, поступающей по данному входу нейрона, то есть в буквальном смысле задание меры подавления нервного сигнала.
Далее: полученные уже после весовых коэффициентов сигналы суммируются, затем итоговый сигнал операции суммирования преобразуется следом так называемой активационной функцией и подается на выход нейрона. Активационную функцию прокомментировать можно как механизм, обеспечивающий порог срабатывания, отзывчивости нейрона на сумму входных сигналов, перевод его в состояние возбуждения, а также возвращение в состояние покоя, то есть торможения. Затем выходной сигнал нейрона поступает на вход следующего нейрона, и все повторяется, пока не будет достигнут желаемый, то есть "запрограммированный" устройством нейронной сети результат.
Такая модель нейрона лишь в общих чертах отражает работу истинного нейрона головного мозга: активационная функция моделирует возбуждение нейрона, а весовые коэффициенты по входам имитируют прохождение сигналов через синапсы нейрона. Синапсы - специализированные функциональные контакты между возбудимыми клетками, служащие для передачи и преобразования сигналов. Кроме того, нейроны группируются в нейронные слои и образуют нейронную сеть.
Тип соединения нейронов и их количество в нейронной сети полностью определяет возможности последней: ее мощность и спектр задач, которые она призвана решать. В настоящее время существует более 200 разновидностей нейронных сетей. Но основной, самой распространенной и простой является сеть, получившая название многослойный персептрон. Персептрон, перцептрон (от латинского perceptio - понимание, познавание, восприятие) - математическая модель процесса восприятия. Модель восприятия (персептивная модель) может быть представлена в виде трех слоев нейронов: рецепторного слоя, слоя преобразующих нейронов и слоя реагирующих нейронов. Персептрон же состоит из слоя входных нейронов, слоя выходных и нескольких промежуточных слоев.
Многослойные нейронные сети обладают различной мощностью. Мощность нейронной сети, очевидно, будет зависеть от числа слоев и числа нейронов в каждом слое. Интуитивно можно предположить, что с увеличением количества слоев и нейронов качество нейронной сети улучшится, и это действительно так, но до некоторого предела, когда наращивание объема становится неэффективным. Уровень порога связан с размерностями входных и выходных данных, а также с внутренней структурой обрабатываемых данных.
Для того чтобы созданная сеть начала работать, ее необходимо обучить. Необученная сеть не имеет даже "рефлексов" - на любые внешние воздействия ее реакция будет хаотичной. Обучение состоит в многократном предъявлении множества чуть-чуть отличающихся характерных примеров распознаваемого элемента до тех пор, пока сеть не станет давать на выходе ожидаемый отклик.
Существуют алгоритмы обучения с учителем и без него. В первом случае в выработке весовых коэффициентов (обучении) участвует человек. Объясним доходчиво суть такого обучения: человек подает на вход спроектированной нейронной сети пример распознаваемого элемента, затем вручную, или посредством поддерживаемых сетью специальных возможностей, или вспомогательными утилитами сервисного обслуживания сетей настраивает весовые коэффициенты (буквально "подкручивает сопротивления") у разных нейронов обучаемой сети, чтобы на ее выходе получился сигнал такой-то величины. Затем подает на вход сети следующий пример, едва-едва отличающийся от предыдущего, и теперь "подкручивает сопротивления" таким образом, чтобы и на прошлый, и на новый пример обучаемая нейронная сеть давала на выходе сигнал заданной или очень близкой к ней величины. То есть человек-учитель пытается достичь в настройках весовых коэффициентов как бы золотой середины. Следующий пример на вход - и следующая подстройка коэффициентов. В конце концов обученная таким образом сеть готова рефлекторно откликаться в форме заданного уровня сигнала на выходе при появлении на входе распознаваемого элемента, причем тот, в зависимости от длительности обучения, опознается в весьма широком диапазоне вариаций его появления.
Кстати, эти особенности обусловили значительную направленность нейронных сетей на задачи распознавания, в числе которых оказывается не только распознавание изображений, но и уверенная идентификация неких явлений, фаз изменения, преподнесенных на вход нейронной сети в виде состояний соответствующих "участников" явления, фазы или прочего; скажем, прогнозирование изменения курса валют требует идентификации, распознавания экономических состояний. В то же время указанные особенности нейронных сетей все-таки не способствуют воспроизведению актов подлинного мышления. Видимо, не нашлась пока уникальная свежая идея на этот счет.
Во втором случае - в случае обучения без учителя - сеть справляется сама, выполняя в принципе те же действия по подстройке весовых коэффициентов, только самообучение инициируется здесь фактом обнаруженного противоречия с имеющимися в нейронной сети знаниями, когда поступивший на вход элемент очень слабо или вовсе не распознается, но его непременно требуется как-то классифицировать.
Кратко объясним суть и этого обучения. В первую очередь для таких сетей предполагается, что они имеют в своем составе достаточный запас нейронных узлов, в которых будут храниться знания в виде настроенных весовых коэффициентов, или же что сеть в состоянии "выращивать" такие узлы, создавать и подключать их к себе самостоятельно. Во вторую очередь считается, что изначально заданы предельные границы расхождения результатов распознавания с наколенными знаниями, после которых элемент признается неизвестным. Грубо скажем, если более 50 процентов деталей элемента не распознаются, он считается неизвестным, вызывающим противоречие.
Итак, пусть сеть в начальный момент времени не обучена. На входе появляется подлежащий распознаванию элемент. Рождается противоречие с накопленным знанием, так как элемент вообще неизвестен, так как расхождение со знаниями в этом случае измеряется сотней процентов. Одному из свободных узлов сети передаются на вход зафиксированные сигналы от элемента, выход узла подразумевается быть всегда равным величине сигнала "опознал" (условно назовем так этот сигнал) или "тишина", и уже внутри узла выполняется автоматическая подстройка весовых коэффициентов, заменяя ручную подгонку как в случае обучения с учителем.
Пусть теперь на вход сети поступил прошлый элемент, чуть измененный в вариации. Обученный нейронный узел, который тоже подключен ко входной магистрали, опознает элемент с погрешностью, допустим, в 30 процентов. Понятно, что выходной сигнал узла мы назвали в исключительной форме "опознал" для удобства, на самом же деле он изменяется в пределах от "тишина" (это же "опознал на 0 процентов") до "опознал на 100 процентов". Сеть, не обнаружив выхода за пределы границы расхождения, передает тому же узлу новый пример элемента, чтобы узел подстроил весовые коэффициенты на удачное опознание и первого примера, и второго примера одного и того же элемента.
Как только на входе появился неизвестный элемент, то есть когда ни один из обученных узлов не опознал элемент с точностью свыше 50 процентов, сеть передает сигналы от элемента следующему незадействованному в системе знаний узлу, который тоже по описанному выше сценарию попадает в систему накопленных нейронной сетью знаний. Этим и обеспечивается обучение сети без учителя, и как правило, подобный процесс происходит качественно, если удачно организовано взаимодействие сети с нейронными узлами.
Планируется симулировать в реальном времени до 500 000 нейронов, что примерно соответствует количеству нейронов в мозгу пчелы. На конечной стадии проекта предполагается, что устройство будет способно смоделировать до миллиарда нейронов, что приблизительно равняется количеству нейронов в человеческом мозгу.
