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

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

На рисунке изображена модель нейрона с тремя входами (дендритами), причем синапсы этих дендритов имеют веса w1, w2, w3. Пусть к синапсам поступают импульсы силы x1, x2, x3 соответственно, тогда после прохождения синапсов и дендритов к нейрону поступают импульсы w1x1, w2x2, w3x3. Нейрон преобразует полученный суммарный импульс x=w1x1+ w2x2+ w3x3 в соответствии с некоторой передаточной функцией f(x). Сила выходного импульса равна y=f(x)=f(w1x1+ w2x2+ w3x3).
Таким образом, нейрон полностью описывается своими весами wk и передаточной функцией f(x). Получив набор чисел (вектор) xk в качестве входов, нейрон выдает некоторое число y на выходе.
Как работает нейронная сетьИскусственная нейронная сеть (ИНС, нейронная сеть) - это набор нейронов, соединенных между собой. Как правило, передаточные функции всех нейронов в нейронной сети фиксированы, а веса являются параметрами нейронной сети и могут изменяться. Некоторые входы нейронов помечены как внешние входы нейронной сети, а некоторые выходы - как внешние выходы нейронной сети. Подавая любые числа на входы нейронной сети, мы получаем какой-то набор чисел на выходах нейронной сети. Таким образом, работа нейронной сети состоит в преобразовании входного вектора в выходной вектор, причем это преобразование задается весами нейронной сети.
Практически любую задачу можно свести к задаче, решаемой нейронной сетью. В этой таблице показано, каким образом следует сформулировать в терминах нейронной сети задачу распознавания рукописных букв.
Задача распознавания рукописных букв
Дано: растровое черно-белое изображение буквы размером 30×30 пикселов
Надо: определить, какая это буква (в алфавите 33 буквы)
Формулировка для нейронной сети:
Дано: входной вектор из 900 двоичных символов (900=30×30)
Надо: построить нейронную сеть с 900 входами и 33 выходами, которые помечены буквами. Если на входе нейронной сети изображение буквы “А”, то максимальное значение выходного сигнала достигается на выходе “А”. Аналогично нейронная сеть работает для всех 33 букв.
Поясним, зачем требуется выбирать выход нейронной сети с максимальным уровнем сигнала. Дело в том, что уровень выходного сигнала, как правило, может принимать любые значения из какого-то отрезка. Однако, в данной задаче нас интересует не аналоговый ответ, а всего лишь номер категории (номер буквы в алфавите). Поэтому используется следующий подход - каждой категории сопоставляется свой выход, а ответом нейронной сети считается та категория, на чьем выходе уровень сигнала максимален. В определенном смысле уровень сигнала на выходе “А” - это достоверность того, что на вход нейронной сети была подана рукописная буква “A”. Задачи, в которых нужно отнести входные данные к одной из известных категорий, называются задачами классификации. Изложенный подход - стандартный способ классификации с помощью нейронных сетей.
Как постороить нейронную сеть
Теперь, когда стало ясно, что именно мы хотим построить, мы можем переходить к вопросу “как строить такую нейронную сеть”. Этот вопрос решается в два этапа:
- Выбор типа (архитектуры) нейронной сети.
- Подбор весов (обучение) нейронной сети.
На первом этапе следует выбрать следующее:
- какие нейроны мы хотим использовать (число входов, передаточные функции);
- каким образом следует соединить их между собой;
- что взять в качестве входов и выходов нейронной сети.
Эта задача на первый взгляд кажется необозримой, но, к счастью, нам необязательно придумывать нейронную сеть “с нуля” - существует несколько десятков различных нейросетевых архитектур, причем эффективность многих из них доказана математически. Наиболее популярные и изученные архитектуры - это многослойный перцептрон, нейронная сеть с общей регрессией, нейронные сети Кохонена и другие. Про все эти архитектуры скоро можно будет прочитать в специальном разделе этого учебника.
На втором этапе нам следует “обучить” выбранную нейронную сеть, то есть подобрать такие значения ее весов, чтобы она работала нужным образом. Необученная нейронная сеть подобна ребенку - ее можно научить чему угодно. В используемых на практике нейронных сетях количество весов может составлять несколько десятков тысяч, поэтому обучение - действительно сложный процесс. Для многих архитектур разработаны специальные алгоритмы обучения, которые позволяют настроить веса нейронной сети определенным образом. Наиболее популярный из этих алгоритмов - метод обратного распространения ошибки (Error Back Propagation), используемый, например, для обучения перцептрона.
Обучение нейронных сетей
Обучить нейронную сеть - значит, сообщить ей, чего мы от нее добиваемся. Этот процесс очень похож на обучение ребенка алфавиту. Показав ребенку изображение буквы “А”, мы спрашиваем его: “Какая это буква?” Если ответ неверен, мы сообщаем ребенку тот ответ, который мы хотели бы от него получить: “Это буква А”. Ребенок запоминает этот пример вместе с верным ответом, то есть в его памяти происходят некоторые изменения в нужном направлении. Мы будем повторять процесс предъявления букв снова и снова до тех пор, когда все 33 буквы будут твердо запомнены. Такой процесс называют “обучение с учителем”.

При обучении нейронной сети мы действуем совершенно аналогично. У нас имеется некоторая база данных, содержащая примеры (набор рукописных изображений букв). Предъявляя изображение буквы “А” на вход нейронной сети, мы получаем от нее некоторый ответ, не обязательно верный. Нам известен и верный (желаемый) ответ - в данном случае нам хотелось бы, чтобы на выходе нейронной сети с меткой “А” уровень сигнала был максимален. Обычно в качестве желаемого выхода в задаче классификации берут набор (1, 0, 0, …), где 1 стоит на выходе с меткой “А”, а 0 - на всех остальных выходах. Вычисляя разность между желаемым ответом и реальным ответом сети, мы получаем 33 числа - вектор ошибки. Алгоритм обратного распространения ошибки - это набор формул, который позволяет по вектору ошибки вычислить требуемые поправки для весов нейронной сети. Одну и ту же букву (а также различные изображения одной и той же буквы) мы можем предъявлять нейронной сети много раз. В этом смысле обучение скорее напоминает повторение упражнений в спорте - тренировку.
Оказывается, что после многократного предъявления примеров веса нейронной сети стабилизируются, причем нейронная сеть дает правильные ответы на все (или почти все) примеры из базы данных. В таком случае говорят, что “нейронная сеть выучила все примеры”, “нейронная сеть обучена”, или “нейронная сеть натренирована”. В программных реализациях можно видеть, что в процессе обучения величина ошибки (сумма квадратов ошибок по всем выходам) постепенно уменьшается. Когда величина ошибки достигает нуля или приемлемого малого уровня, тренировку останавливают, а полученную нейронную сеть считают натренированной и готовой к применению на новых данных.
Важно отметить, что вся информация, которую нейронная сеть имеет о задаче, содержится в наборе примеров. Поэтому качество обучения нейронной сети напрямую зависит от количества примеров в обучающей выборке, а также от того, насколько полно эти примеры описывают данную задачу. Так, например, бессмысленно использовать нейронную сеть для предсказания финансового кризиса, если в обучающей выборке кризисов не представлено. Считается, что для полноценной тренировки нейронной сети требуется хотя бы несколько десятков (а лучше сотен) примеров.
Повторим еще раз, что обучение нейронных сетей - сложный и наукоемкий процесс. Алгоритмы обучения нейронных сетей имеют различные параметры и настройки, для управления которыми требуется понимание их влияния.
Применение нейронной сети

После того, как нейронная сеть обучена, мы можем применять ее для решения полезных задач. Важнейшая особенность человеческого мозга состоит в том, что, однажды обучившись определенному процессу, он может верно действовать и в тех ситуациях, в которых он не бывал в процессе обучения. Например, мы можем читать почти любой почерк, даже если видим его первый раз в жизни. Так же и нейронная сеть, грамотным образом обученная, может с большой вероятностью правильно реагировать на новые, не предъявленные ей ранее данные. Например, мы можем нарисовать букву “А” другим почерком, а затем предложить нашей нейронной сети классифицировать новое изображение. Веса обученной нейронной сети хранят достаточно много информации о сходстве и различиях букв, поэтому можно рассчитывать на правильный ответ и для нового варианта изображения.
November 28th, 2008 at 15:24
что-то не все пикчи грузятся.
November 28th, 2008 at 15:56
мозг сломан. спасибо ))
November 28th, 2008 at 16:40
Мне кажется что интеллект - это самообучаемость + рефлексия. Если первое теоретически достижимо, то рефлексирующий алгоритм - фантастика
P.S. Сигурд, фотка реальная? Ты на MBP работаешь?
November 28th, 2008 at 17:44
Интересная темка. Надо будет литературку намутить.
зы Сигурд текст поправить бы не мешало по ширине, а т вылазит за границы поста, или это только у меня так?
November 28th, 2008 at 18:28
странно, у меня все пикчи показывает.
Eugene, рефлексия - это что?
Да, это вчера меня анальгин в офисе отфоткал, на МБП работаю
Тиман, я уже угрохал час на то, чтобы поправить текст и так и не понял, как это сделать, эта гребанная таблица все равно вылезает на колонку
November 28th, 2008 at 20:27
Рефлекция - обращение сознания на самого себя (http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%84%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D1%8F)
November 28th, 2008 at 20:29
ээ, мм, давай чет полегче))
November 28th, 2008 at 20:30
Кстати почему-то многие русские вебмастера и it-бизнесмены недолюбливают технику apple и относятся с предубеждением (даже на мастериксе надавно holywar развели на эту тему). Сам работаю на маках уже больше двух лет и считаю что это удобство иногда экономит массу времени, ну и приносит удовольствие от работы на классном продуманном инструменте
November 28th, 2008 at 20:37
Сигурд, у тебя контент в ширину растягивает картинка (img height=”237″ width=”628″), попробуй поставить ей style=”display: none;” и увидишь что все станет на свои места. Нужно либо отресайзить картинку, либо пропорционально изменить ее размер в теге, сохраняя пропорции.
November 28th, 2008 at 22:29
спасибо
по поводу рефлексии вот тут и есть интересный вопрос, можно ли искуственно научить компьютер анализировать самого себя и свои решения?
November 28th, 2008 at 23:06
Я сам склоняюсь к тому что это все-таки невозможно (и соответственно полноценный искусственный интеллект невозможен), но хочется верить
November 29th, 2008 at 00:06
пиво рульное, одно из любимых, по теме- хз. темное дело какое-то
November 29th, 2008 at 00:18
А генератор текста Вацлава основан на нейронной сети?
November 29th, 2008 at 00:51
а кто на диване спит? )
November 29th, 2008 at 01:07
интересно, и создание ИИ не за горами, всё движется к этому, недавно совсем были созданы искусственные нейроны которые соединили с живой тканью(мозг мыши), а если сложить ещё и наработки в области робототехники, киборги скоро станут реальностью.
November 29th, 2008 at 01:09
… не когда раньше не мог предположить работу за ОС кроме, как Виндовс( я был очень глуп… Счас на МакБуукПро работаю, не мог даже и представить что переход с Винды на Мак Ос Х сможет повлиять на мою скорость работы) Это мега решения для вебмастеров, особенно руллит управелния Маков клай, это просто Супер)
November 29th, 2008 at 02:08
[...] Нервная система и мозг человека состоят из нейронов, соединенных между собой нервными волокнами. Нервные волокна способны передавать электрические импульсы между нейронами. Все процессы передачи раздражений от нашей кожи, ушей и глаз к мозгу, процессы мышления и управления действиями - все это реализовано в живом организме как передача электрических импульсов между нейронами. Рассмотрим строение биологического нейрона. Каждый нейрон имеет отростки нервных волокон двух типов - дендриты, по которым принимаются импульсы, и единственный аксон, по которому нейрон может передавать импульс. Аксон контактирует с дендритами других нейронов через специальные образования - синапсы, которые влияют на силу импульса. Дальше [...]
November 29th, 2008 at 02:10
Hardman, насколько я помню да, там семантическое ядро у него есть и обучаемая сетка, которая обучается в течение недели где-то, после чего начинает сама писать неплохие тексты, собираю все больше информации с сети. Ну это не вдаваясь в подробности
jagger, я и дремлю
farelf, да, я проучился первый год своей институтской жизни на робототехнике, ходил смотрел интересных роботов с первым допуском секретности, страшно представить, какие темы прячут на более низких этажах
November 29th, 2008 at 03:49
на мой взгляд, нейронная сеть это всего лишь железо. Конечно железо невероятно сложное, но все таки железо. Наше сознание, наш ум это операционная система. У всего человечества она одна, с разными настройками, разным софтом, разным сервис паком, разными плюшками и пр. Что бы создать искуственный интелект надо повторить нашу операционную систему.
Инки, толтеки и прочие жители нового света обладали колосальными познаниями в астрономии, человеческой психологии, строительстве и прочих науках, но так и не смогли изобрести колесо, такую казалось бы элементарную вещь. Сейчас все прогрессивное человечество бьется над созданием искуственного интелекта, но видимо высокие познания не дают увидеть простые вещи из которых состоит наша ОСь. Так что пока изобретение колеса откладывается.
Хорошие веб мастера, знающие свое дело, обладают познаниями способными сделать их миллионерами, но видимо эти самые познания загоняют всех в узкие рамки не дающие взглянуть на интернет бизнес с другой стороны. Не со стороны железа и софта, а со стороны человеческого интелекта.
November 29th, 2008 at 07:12
Что считать интеллектом?- или все же сознанием(самосознанием)?Например человека от животного отличает возможность(умение)анализировать свой поток мыслей, тоесть в случае искусственного интеллекта это аналогично как и с человеком.
p.s Слава Роботам,Смерть человечеству,Слава Вселенской Церкви Робомозга.
November 29th, 2008 at 11:06
Реально действующего определения искусственного интеллекта пока что никто дать не смог. А дядюшка Тьюринг “подложил свинью”, описав способ определения искусственного интеллекта, который можно описать двумя словами - “подобный человеческому”. Стенли Кубрик со своим HAL-ом в “Одиссее 2000″ закрепил в неокрепших академических умах того времени то, что компьютер должен действовать как человек и иметь очеловеченный интерфейс пользователя. Но сейчас исследователи начали отходить от “очеловеченности” интеллекта. И стали понимать, что разумное поведение искусственных систем возможно. И это поведение может не вписываться в рамки человеческого интеллекта.
О как меня плющит! %)
November 29th, 2008 at 11:52
Bitonic, вот это главный момент на мой взгляд, когда говорят об ИИ, почему-то представляют себе человека, а ведь на самом деле не обязательно это должен быть человек, совсем не обязательно…
November 29th, 2008 at 17:20
Чтобы человеку создать интеллект, подобный его собственному, нужно по крайней мере подняться на уровень выше. А поскольку подниматься некуда, то ИИ - это будет уже нечто другое.
Хотя если предположить, что подсознание - это второй левел интеллекта, то теоретически можно создать робота с первым левелом - он будет так же жрать, спать, трахаться, но у него не будет скрытых сверхспособностей.
Херню какую-то написал, ну да ладно
Нейросети рулят, ага.
November 30th, 2008 at 17:44
Гы, а чего жрете хуйню всякую?
November 30th, 2008 at 21:25
А чего вы хотите достичь с помощью ИИ? Какое преимущество будет иметь комп, способный анализировать самого себя? В среде вебмастеров, как уже было сказано, есть только два применения ИИ - это распознавание образов и написание контента. И то, это не ИИ, а просто оптимизированная программа.
Цели то какие?
November 30th, 2008 at 23:29
вот от такой еды у меня выросло пузо.
December 1st, 2008 at 14:30
kemuri, когда задача по максимуму в офисе отработать, не до жратвы, вот после рачобего дня можно пойти в приличное заведение
non, в том-то и дело, что это пока такое применение, так как действительно это по сути не ИИ, задачи, ну хотя бы того же поиска семантиеческого
вообще при хорошем раскладе ИИ сможет сам делать нормальные сайты, с уникальными текстами и т.д.
было бы что применять
December 6th, 2008 at 21:19
Вот и на еще один шаг мы приблизились к созданию машин, которые нас поработят)
December 7th, 2008 at 19:43
Серега, относительно генерации текста просто заметил фразу
так вот - как было гуглу похуй на текст если линками забили, так в общем-то и остается, да сложнее, да больше нужно потратить, но в общем и целом ситуация такая же.
Я не имею в виду что текст в принципе не нужен, но опять же - генерить сценарии - зачем? генерить тексты - зачем? Да, возможно в скором времени боты будут больше понимать где генерация где полугенерация где нормальный текст. Но до тех пор как раз генерация текстов нейросетями останется “пушкой по воробьям”. И я реально видел как страница СтоунКипера с одним словом Phentermine была неделю первой в гугле
December 8th, 2008 at 01:52
тоже верно, просто и выносят их оттуда в итоге
December 8th, 2008 at 06:53
Пфф… я не помнил 1/10 мест где были мои доры когда я ими занимался. це ж как тараканы
December 8th, 2008 at 15:41
ну да, просто здесь у каждого свой подход, мне импонирует подход вацлава
December 8th, 2008 at 15:44
Сиг, а одно другому не мешает
Просто надо посчитать затраты на одно и затраты на другое и совместить их с прибылями
December 8th, 2008 at 17:28
тоже верно
December 9th, 2008 at 12:21
Долго не был на блоге, поэтому комментить буду кратко))
Аналогично писал курсовик по нейронкам на распознавание изображений…