Ученые из Стэнфордского университета разработали и изготовили опытный образец компьютера, работа которого подражает работе головного мозга. За счет этого компьютер, который пока еще представляет собой печатную плату с установленными на нем чипами, размером с планшетный компьютер, демонстрирует на определенном виде задач производительность в 9 тысяч раз превышающую производительность обычного настольного персонального компьютера.
Давайте узнаем подробнее про это исследование … При создании электронного нейрокомпьютера учеными была использована их фирменная архитектура под названием Neurogrid. На плате нейрокомпьютера установлены 16 специализированных процессоров Neurocore, которые в сумме могут моделировать работу 1 миллиона нейронов и несколько миллиардов связей между нейронами, синапсов. За счет такого высокого уровня интеграции новый нейрокомпьютер демонстрирует в 40 тысяч большую эффективность с точки зрения соотношения вычислительной мощности к потребляемой энергии, чем процессоры обычных компьютеров.
Эффективность работы процессоров Neurocore достигается за счет того, что одни и те же элементы электронных схем могут использоваться для обеспечения работы сразу нескольких моделей нейронов и синапсов. Это позволяет процессорам Neurocore строить более обширные и сложные нейронные сети, нежели это могут сделать нейропроцессоры, созданные другими группами ученых.
Следующим шагом, который намерены предпринять Стэнфордские ученые, станет разработка программного обеспечения, при помощи которого инженеры и программисты смогут создавать программы для нейрокомпьютера Neurogrid, не имея обширных знаний в области нейробиологии и об архитектуре нейрокомпьютера.
«Сейчас программирование нашего нейрокомпьютера является весьма сложной задачей, требующей достаточно большого количества высокоинтеллектуального труда» - рассказывает Квабена Боуэн (Kwabena Boahen), один из исследователей, принимавших участие в создании нейрокомпьютера, - «Мы же хотим создать такой пакет для разработки программного обеспечения, при помощи которого каждый человек, ничего не знающий о нейронах и синапсах, сможет разрабатывать программы, которые будут максимально эффективно использовать все возможности нейрокомпьютера Neurogrid».
Еще одной задачей, которая очень остро стоит перед исследователями, является задача снижения стоимости нейропроцессоров Neurocore. Сейчас изготовление нейрокомпьютера обходится приблизительно в 40 тысяч долларов, но ученые планирую снизить эту сумму до 400 долларов путем замены нейропроцессоров, изготовленных при помощи технологий 15-летней давности, на нейропроцессоры, изготовленные на современных технологических линиях с новыми возможностями. Параллельно с этим ученые планируют привести энергетическую эффективность будущего нейрокомпьютера к уровню, сопоставимому с эффективностью работы мозга человека. Ведь человеческий мозг, насчитывающий в 80 тысяч раз больше нейронов, потребляет всего в три раза большее количество энергии, нежели нейрокомпьютер Neurogrid.
Немного теории. Человеческий мозг содержит порядка нескольких миллиардов вычислительных элементов, называемых нейронами. Нейроны связаны между собой в сложную сеть. Эта сеть отвечает за все явления, которые мы называем мыслями, эмоциями, познанием и так далее, то есть на физиологическом уровне образует то, что называется на самом деле нервной системой, в свою очередь совокупность явлений в нервной системе можно назвать психикой, люди же обычные, особо не обремененные научной пунктуальностью, часто именуют последнюю словом «интеллект». Каждый нейрон состоит из трех основных частей: самой клетки (сомы) и двух типов древовидных отростков - дендритов (их обычно очень много) и аксонов (обычно он один). Вообще-то, для нервной системы позвоночных характерны мультиполярные нейроны. В таком нейроне от клеточного тела отходят несколько дендритов и аксон. По правде говоря, структура, размеры и форма нейронов сильно варьируются. Например, периферические чувствительные нейроны вовсе не идентичны нейронам, составляющим мозг. Дендриты выполняют роль своеобразных «входов» для нервных импульсов, а аксон - «выхода».
Скорость передачи нервных импульсов сравнительно мала, но несмотря на это скорость обработки информации в мозге огромна. Достигается это за счет того, что внешняя информация распределяется по множеству нейронов и обрабатывается ими одновременно, то есть реализуется максимально распараллеленная обработка информации. Но это все относится к вопросам биологического устройства, нас же больше интересует искусственная модель нейрона, та модель, которая была предложена учеными.
Общие принципы работы модели нейрона можно описать следующим образом: на входы нейрона поступают нервные сигналы от других нейронов. Каждый вход характеризуется собственным некоторым весовым коэффициентом, определяющим важность получаемой информации. Вдаваясь в грубую аналогию, весовой коэффициент объясняют как своего рода сопротивление (резистор, если нервный сигнал рассматривается как аналоговый электрический сигнал), оказываемое поступающему на конкретный вход нейрона нервному сигналу. Предварительно устанавливая величину такого «сопротивления» или же динамически изменяя его величину по определенным правилам в процессе работы нейронной сети, осуществляется как бы задание степени значимости информации, поступающей по данному входу нейрона, то есть в буквальном смысле задание меры подавления нервного сигнала.
Далее: полученные уже после весовых коэффициентов сигналы суммируются, затем итоговый сигнал операции суммирования преобразуется следом так называемой активационной функцией и подается на выход нейрона. Активационную функцию прокомментировать можно как механизм, обеспечивающий порог срабатывания, отзывчивости нейрона на сумму входных сигналов, перевод его в состояние возбуждения, а также возвращение в состояние покоя, то есть торможения. Затем выходной сигнал нейрона поступает на вход следующего нейрона, и все повторяется, пока не будет достигнут желаемый, то есть «запрограммированный» устройством нейронной сети результат.
Такая модель нейрона лишь в общих чертах отражает работу истинного нейрона головного мозга: активационная функция моделирует возбуждение нейрона, а весовые коэффициенты по входам имитируют прохождение сигналов через синапсы нейрона. Синапсы - специализированные функциональные контакты между возбудимыми клетками, служащие для передачи и преобразования сигналов. Кроме того, нейроны группируются в нейронные слои и образуют нейронную сеть.
Тип соединения нейронов и их количество в нейронной сети полностью определяет возможности последней: ее мощность и спектр задач, которые она призвана решать. В настоящее время существует более 200 разновидностей нейронных сетей. Но основной, самой распространенной и простой является сеть, получившая название многослойный персептрон. Персептрон, перцептрон (от латинского perceptio - понимание, познавание, восприятие) - математическая модель процесса восприятия. Модель восприятия (персептивная модель) может быть представлена в виде трех слоев нейронов: рецепторного слоя, слоя преобразующих нейронов и слоя реагирующих нейронов. Персептрон же состоит из слоя входных нейронов, слоя выходных и нескольких промежуточных слоев.
Многослойные нейронные сети обладают различной мощностью. Мощность нейронной сети, очевидно, будет зависеть от числа слоев и числа нейронов в каждом слое. Интуитивно можно предположить, что с увеличением количества слоев и нейронов качество нейронной сети улучшится, и это действительно так, но до некоторого предела, когда наращивание объема становится неэффективным. Уровень порога связан с размерностями входных и выходных данных, а также с внутренней структурой обрабатываемых данных.
Для того чтобы созданная сеть начала работать, ее необходимо обучить. Необученная сеть не имеет даже «рефлексов» - на любые внешние воздействия ее реакция будет хаотичной. Обучение состоит в многократном предъявлении множества чуть-чуть отличающихся характерных примеров распознаваемого элемента до тех пор, пока сеть не станет давать на выходе ожидаемый отклик.
Существуют алгоритмы обучения с учителем и без него. В первом случае в выработке весовых коэффициентов (обучении) участвует человек. Объясним доходчиво суть такого обучения: человек подает на вход спроектированной нейронной сети пример распознаваемого элемента, затем вручную, или посредством поддерживаемых сетью специальных возможностей, или вспомогательными утилитами сервисного обслуживания сетей настраивает весовые коэффициенты (буквально «подкручивает сопротивления») у разных нейронов обучаемой сети, чтобы на ее выходе получился сигнал такой-то величины. Затем подает на вход сети следующий пример, едва-едва отличающийся от предыдущего, и теперь «подкручивает сопротивления» таким образом, чтобы и на прошлый, и на новый пример обучаемая нейронная сеть давала на выходе сигнал заданной или очень близкой к ней величины. То есть человек-учитель пытается достичь в настройках весовых коэффициентов как бы золотой середины. Следующий пример на вход - и следующая подстройка коэффициентов. В конце концов обученная таким образом сеть готова рефлекторно откликаться в форме заданного уровня сигнала на выходе при появлении на входе распознаваемого элемента, причем тот, в зависимости от длительности обучения, опознается в весьма широком диапазоне вариаций его появления.
Кстати, эти особенности обусловили значительную направленность нейронных сетей на задачи распознавания, в числе которых оказывается не только распознавание изображений, но и уверенная идентификация неких явлений, фаз изменения, преподнесенных на вход нейронной сети в виде состояний соответствующих «участников» явления, фазы или прочего; скажем, прогнозирование изменения курса валют требует идентификации, распознавания экономических состояний. В то же время указанные особенности нейронных сетей все-таки не способствуют воспроизведению актов подлинного мышления. Видимо, не нашлась пока уникальная свежая идея на этот счет.
Во втором случае - в случае обучения без учителя - сеть справляется сама, выполняя в принципе те же действия по подстройке весовых коэффициентов, только самообучение инициируется здесь фактом обнаруженного противоречия с имеющимися в нейронной сети знаниями, когда поступивший на вход элемент очень слабо или вовсе не распознается, но его непременно требуется как-то классифицировать.
Кратко объясним суть и этого обучения. В первую очередь для таких сетей предполагается, что они имеют в своем составе достаточный запас нейронных узлов, в которых будут храниться знания в виде настроенных весовых коэффициентов, или же что сеть в состоянии «выращивать» такие узлы, создавать и подключать их к себе самостоятельно. Во вторую очередь считается, что изначально заданы предельные границы расхождения результатов распознавания с наколенными знаниями, после которых элемент признается неизвестным. Грубо скажем, если более 50 процентов деталей элемента не распознаются, он считается неизвестным, вызывающим противоречие.
Итак, пусть сеть в начальный момент времени не обучена. На входе появляется подлежащий распознаванию элемент. Рождается противоречие с накопленным знанием, так как элемент вообще неизвестен, так как расхождение со знаниями в этом случае измеряется сотней процентов. Одному из свободных узлов сети передаются на вход зафиксированные сигналы от элемента, выход узла подразумевается быть всегда равным величине сигнала «опознал» (условно назовем так этот сигнал) или «тишина», и уже внутри узла выполняется автоматическая подстройка весовых коэффициентов, заменяя ручную подгонку как в случае обучения с учителем.
Пусть теперь на вход сети поступил прошлый элемент, чуть измененный в вариации. Обученный нейронный узел, который тоже подключен ко входной магистрали, опознает элемент с погрешностью, допустим, в 30 процентов. Понятно, что выходной сигнал узла мы назвали в исключительной форме «опознал» для удобства, на самом же деле он изменяется в пределах от «тишина» (это же «опознал на 0 процентов») до «опознал на 100 процентов». Сеть, не обнаружив выхода за пределы границы расхождения, передает тому же узлу новый пример элемента, чтобы узел подстроил весовые коэффициенты на удачное опознание и первого примера, и второго примера одного и того же элемента.
Как только на входе появился неизвестный элемент, то есть когда ни один из обученных узлов не опознал элемент с точностью свыше 50 процентов, сеть передает сигналы от элемента следующему незадействованному в системе знаний узлу, который тоже по описанному выше сценарию попадает в систему накопленных нейронной сетью знаний. Этим и обеспечивается обучение сети без учителя, и как правило, подобный процесс происходит качественно, если удачно организовано взаимодействие сети с нейронными узлами.
День сегодняшний
Сейчас нейросетевые технологии применяют во многих областях. Например, когда необходимо решить задачи такого рода: неизвестен алгоритм решения, но имеется множество примеров; исходные данные искажены или противоречивы; имеются большие объемы входной информации. Нейронные сети применяются для решения задач классификации, распознавания образов, оптимизации, прогнозирования и для многих других. Нейротехнологии используются также для распознавания текста со сканеров, проверок достоверности подписей, прогнозирования экономических показателей (например, прогнозирования курса валют), управления технологическими процессами и робототехникой, и прочее, прочее, прочее…
Стоит особо отметить, что нейронные сети не нуждаются для решения задач в заранее составленном математическом алгоритме, они сами вырабатывают методику решения задачи в процессе обучения. В этом коренное отличие нейросетевых компьютеров от компьютеров классических, и их главное преимущество. Математический аппарат работы нейронных сетей несложен. Программирование не требует профессиональных изощрений: на каждом шагу - умножение вектора на матрицу с накоплением суммы. Сложность представляет адаптация алгоритма обучения нейронной сети под конкретную задачу - подбор и моделирование сети, предварительная обработка информации, оценка результатов.
Также нейронные сети имеют возможность роста. При этом сохраняется их структура и значительно увеличивается эффективность обработки информации. Достаточно сложно организованная сеть способна сама себя развивать. Это свойство может очень широко использоваться программистами будущего, которые смогут создавать небольшие нейронные сети и «доращивать» их до необходимой информационной мощности и емкости.