Блог Sigurd’а

Aston Martin за 180 дней!

нейронные сети и искуственный интеллект… 28
Nov

 

сигурд на работе

сигурд на работе

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

Далее пойдет длинный копипаст с neuroproject.ru, кому не интересно, можно пролистать и перейти дальше к моим мысленным изысканиям.

 
  

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

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

Нетрудно построить математическую модель описанного процесса.

Нейронные сети - математический нейрон

На рисунке изображена модель нейрона с тремя входами (дендритами), причем синапсы этих дендритов имеют веса 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”. Задачи, в которых нужно отнести входные данные к одной из известных категорий, называются задачами классификации. Изложенный подход - стандартный способ классификации с помощью нейронных сетей. 

Как постороить нейронную сеть

Теперь, когда стало ясно, что именно мы хотим построить, мы можем переходить к вопросу “как строить такую нейронную сеть”. Этот вопрос решается в два этапа:

  1. Выбор типа (архитектуры) нейронной сети.
  2. Подбор весов (обучение) нейронной сети.

На первом этапе следует выбрать следующее:

  • какие нейроны мы хотим использовать (число входов, передаточные функции);
  • каким образом следует соединить их между собой;
  • что взять в качестве входов и выходов нейронной сети.

Эта задача на первый взгляд кажется необозримой, но, к счастью, нам необязательно придумывать нейронную сеть “с нуля” - существует несколько десятков различных нейросетевых архитектур, причем эффективность многих из них доказана математически. Наиболее популярные и изученные архитектуры - это многослойный перцептрон, нейронная сеть с общей регрессией, нейронные сети Кохонена и другие. Про все эти архитектуры скоро можно будет прочитать в специальном разделе этого учебника.
На втором этапе нам следует “обучить” выбранную нейронную сеть, то есть подобрать такие значения ее весов, чтобы она работала нужным образом. Необученная нейронная сеть подобна ребенку - ее можно научить чему угодно. В используемых на практике нейронных сетях количество весов может составлять несколько десятков тысяч, поэтому обучение - действительно сложный процесс. Для многих архитектур разработаны специальные алгоритмы обучения, которые позволяют настроить веса нейронной сети определенным образом. Наиболее популярный из этих алгоритмов - метод обратного распространения ошибки (Error Back Propagation), используемый, например, для обучения перцептрона. 

Обучение нейронных сетей

    Обучить нейронную сеть - значит, сообщить ей, чего мы от нее добиваемся. Этот процесс очень похож на обучение ребенка алфавиту. Показав ребенку изображение буквы “А”, мы спрашиваем его: “Какая это буква?” Если ответ неверен, мы сообщаем ребенку тот ответ, который мы хотели бы от него получить: “Это буква А”. Ребенок запоминает этот пример вместе с верным ответом, то есть в его памяти происходят некоторые изменения в нужном направлении. Мы будем повторять процесс предъявления букв снова и снова до тех пор, когда все 33 буквы будут твердо запомнены. Такой процесс называют “обучение с учителем”.

Нейронные сети - тренировка нейронной сети

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

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

Нейронные сети - применение нейронной сети

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

 

 

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

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

А теперь самое интересное. Если искуственная нейронная сеть строится по сути на основе биологической нейронной сети, то резонно предположить возможность создания на основе ИНС искуственного интеллекта. Я знаю, что сейчас меня закидают помидорами, но не торопитесь, давайте дадим определение искуственному интеллекту для начала ;)

Что считать уже интеллектом? Самообучаемость? Возможность выбора? Или что-то большее?

Similar Posts:

    None Found



35 Responses to “нейронные сети и искуственный интеллект…”

  1. DmitryHT Says:

    что-то не все пикчи грузятся.

  2. capo Says:

    мозг сломан. спасибо ))

  3. Eugene Says:

    Мне кажется что интеллект - это самообучаемость + рефлексия. Если первое теоретически достижимо, то рефлексирующий алгоритм - фантастика :)

    P.S. Сигурд, фотка реальная? Ты на MBP работаешь?

  4. Тиман Says:

    Интересная темка. Надо будет литературку намутить.
    зы Сигурд текст поправить бы не мешало по ширине, а т вылазит за границы поста, или это только у меня так?

  5. Sigurd Says:

    странно, у меня все пикчи показывает.

    Eugene, рефлексия - это что? :) Да, это вчера меня анальгин в офисе отфоткал, на МБП работаю :)

    Тиман, я уже угрохал час на то, чтобы поправить текст и так и не понял, как это сделать, эта гребанная таблица все равно вылезает на колонку :)

  6. Eugene Says:

    Рефлекция - обращение сознания на самого себя (http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%84%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D1%8F)

  7. Alexz) Says:

    ээ, мм, давай чет полегче))

  8. Eugene Says:

    Кстати почему-то многие русские вебмастера и it-бизнесмены недолюбливают технику apple и относятся с предубеждением (даже на мастериксе надавно holywar развели на эту тему). Сам работаю на маках уже больше двух лет и считаю что это удобство иногда экономит массу времени, ну и приносит удовольствие от работы на классном продуманном инструменте :)

  9. Eugene Says:

    Сигурд, у тебя контент в ширину растягивает картинка (img height=”237″ width=”628″), попробуй поставить ей style=”display: none;” и увидишь что все станет на свои места. Нужно либо отресайзить картинку, либо пропорционально изменить ее размер в теге, сохраняя пропорции.

  10. Sigurd Says:

    спасибо :)

    по поводу рефлексии вот тут и есть интересный вопрос, можно ли искуственно научить компьютер анализировать самого себя и свои решения?

  11. Eugene Says:

    Я сам склоняюсь к тому что это все-таки невозможно (и соответственно полноценный искусственный интеллект невозможен), но хочется верить :)

  12. mr.codec Says:

    пиво рульное, одно из любимых, по теме- хз. темное дело какое-то

  13. Hardman Says:

    А генератор текста Вацлава основан на нейронной сети?

  14. jagger Says:

    а кто на диване спит? )

  15. farelf Says:

    интересно, и создание ИИ не за горами, всё движется к этому, недавно совсем были созданы искусственные нейроны которые соединили с живой тканью(мозг мыши), а если сложить ещё и наработки в области робототехники, киборги скоро станут реальностью.

  16. CaptonNemo Says:

    … не когда раньше не мог предположить работу за ОС кроме, как Виндовс( я был очень глуп… Счас на МакБуукПро работаю, не мог даже и представить что переход с Винды на Мак Ос Х сможет повлиять на мою скорость работы) Это мега решения для вебмастеров, особенно руллит управелния Маков клай, это просто Супер)

  17. Нейронные сети и искусственный интеллект : Блог Молчуна Says:

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

  18. Sigurd Says:

    Hardman, насколько я помню да, там семантическое ядро у него есть и обучаемая сетка, которая обучается в течение недели где-то, после чего начинает сама писать неплохие тексты, собираю все больше информации с сети. Ну это не вдаваясь в подробности :)

    jagger, я и дремлю :)

    farelf, да, я проучился первый год своей институтской жизни на робототехнике, ходил смотрел интересных роботов с первым допуском секретности, страшно представить, какие темы прячут на более низких этажах :)

  19. Саюзник Says:

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

  20. Che00 Says:

    Что считать интеллектом?- или все же сознанием(самосознанием)?Например человека от животного отличает возможность(умение)анализировать свой поток мыслей, тоесть в случае искусственного интеллекта это аналогично как и с человеком.
    p.s Слава Роботам,Смерть человечеству,Слава Вселенской Церкви Робомозга.

  21. Bitonic Says:

    Реально действующего определения искусственного интеллекта пока что никто дать не смог. А дядюшка Тьюринг “подложил свинью”, описав способ определения искусственного интеллекта, который можно описать двумя словами - “подобный человеческому”. Стенли Кубрик со своим HAL-ом в “Одиссее 2000″ закрепил в неокрепших академических умах того времени то, что компьютер должен действовать как человек и иметь очеловеченный интерфейс пользователя. Но сейчас исследователи начали отходить от “очеловеченности” интеллекта. И стали понимать, что разумное поведение искусственных систем возможно. И это поведение может не вписываться в рамки человеческого интеллекта.

    О как меня плющит! %)

  22. Sigurd Says:

    Bitonic, вот это главный момент на мой взгляд, когда говорят об ИИ, почему-то представляют себе человека, а ведь на самом деле не обязательно это должен быть человек, совсем не обязательно…

  23. Random Says:

    Чтобы человеку создать интеллект, подобный его собственному, нужно по крайней мере подняться на уровень выше. А поскольку подниматься некуда, то ИИ - это будет уже нечто другое.

    Хотя если предположить, что подсознание - это второй левел интеллекта, то теоретически можно создать робота с первым левелом - он будет так же жрать, спать, трахаться, но у него не будет скрытых сверхспособностей.

    Херню какую-то написал, ну да ладно :) Нейросети рулят, ага.

  24. kemuri Says:

    Гы, а чего жрете хуйню всякую? :)

  25. non Says:

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

  26. dady Says:

    вот от такой еды у меня выросло пузо. :)

  27. Sigurd Says:

    kemuri, когда задача по максимуму в офисе отработать, не до жратвы, вот после рачобего дня можно пойти в приличное заведение :)

    non, в том-то и дело, что это пока такое применение, так как действительно это по сути не ИИ, задачи, ну хотя бы того же поиска семантиеческого :) вообще при хорошем раскладе ИИ сможет сам делать нормальные сайты, с уникальными текстами и т.д. :) было бы что применять :)

  28. michael Says:

    Вот и на еще один шаг мы приблизились к созданию машин, которые нас поработят)

  29. arachno Says:

    Серега, относительно генерации текста просто заметил фразу :)
    так вот - как было гуглу похуй на текст если линками забили, так в общем-то и остается, да сложнее, да больше нужно потратить, но в общем и целом ситуация такая же.
    Я не имею в виду что текст в принципе не нужен, но опять же - генерить сценарии - зачем? генерить тексты - зачем? Да, возможно в скором времени боты будут больше понимать где генерация где полугенерация где нормальный текст. Но до тех пор как раз генерация текстов нейросетями останется “пушкой по воробьям”. И я реально видел как страница СтоунКипера с одним словом Phentermine была неделю первой в гугле :)

  30. Sigurd Says:

    тоже верно, просто и выносят их оттуда в итоге ;)

  31. arachno Says:

    Пфф… я не помнил 1/10 мест где были мои доры когда я ими занимался. це ж как тараканы :)

  32. Sigurd Says:

    ну да, просто здесь у каждого свой подход, мне импонирует подход вацлава :)

  33. arachno Says:

    Сиг, а одно другому не мешает
    Просто надо посчитать затраты на одно и затраты на другое и совместить их с прибылями :)

  34. Sigurd Says:

    тоже верно :)

  35. Tex Says:

    Долго не был на блоге, поэтому комментить буду кратко))
    Аналогично писал курсовик по нейронкам на распознавание изображений…

Leave a Reply










Meta



 Облако тегов



 Комментаторы