Нейронные сети: Лекция 1

    Здравствуйте, хабраобщество.

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

    Литература


    1. Ben Krose, Valter van de Smagt: Introduction to neural networks.
    2. Р. Каллан, Введение в нейронные сети.
    3. Саймон Хайкин, Нейронные сети полный курс.
    4. Gupta Jin Homma, Statical and Dynamical neural networks.

    Первые 2 книги хороши для вступления, первая лучше всего, но она на английском, вторая также, чуть хуже изложена, но на русском.

    Биологические основания нейронных сетей

    .
    // тема отдана на самостоятельную обработку.
    Теория искусств нейронных сетей появилась, как попытка смоделировать ЦНС (ЦНС — центральная нервная система) высших млекопитающих в 50х годах прошлого столетия.

    Выяснилось, что модели искусственных нейронных сетей (Далее ИНС, НС) слишком просты и современные модели нейрофизиологии по сложности на порядок превышает модели НС. Вместе с тем выяснилось, что теория ИНС является прекрасным инструментом для решения сугубо математических задач особенно к класам трудноформализируемых задач.

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


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

    Чем выше размерность задачи, тем лучше работает нейронные сети и тем хуже классическая математика.

    Концепции


    1) ЦНС высших млекопитающих состоит из клеток — нейрон связанных друг с другом из всевозможными клетками рецепторами (зрительные, слуховые, тд). Общее количество таких клеток порядка 10^10.
    Связь между нейронами осуществляется с помощью контактов — сИнапсы.

    Сила связи между двумя нейронами пропорциональна концентрации вещества — нейромедиатр.

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

    Нейрон становиться активным, тогда. когда количество активных нейронов связанных синапсами превышает определенный порог.


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

    Такой набор векторов получил название — обучающая выборка.

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

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

    Понятие искусственного нейрона


    Нейроном называется математический объект, который имеет n-входов и 1 выход.
    Входы предназначены для передачи числовой информации, равно как и выходная.

    Входная информация обозначается Xi.
    Входы связывают искусственный нейрон (ИС) с другими или с внешним источником информации и носят название связей.

    С каждой связью связано число, которое называют весами и обозначается — Wi. (i — номер связи)


    Поступающая через вход информация обрабатывается в нейроне в 2 этапа:
    1. На первом этапе вычисляется взвешенная сумма: S = W1X1+W2X2+...+WnXn + O.
      Число О — порог.

      Обычно, для унификации записи порог рассматривается как вес тупой связи, то есть связи которая все время генерирует 1.
      И тогда можно записать как:
      S = W0X0 + W1X1 + W2X2 +… + WnXn, где X0 = 1, W0 = O.
      (классический нейрон)

      В обобщённом КН выступают вероятностные меры, которые число О — случ. величина N(0, G)

      Алгебраический нейрон это нейрон, где сумма S нелинейна.

    2. Выход нейрона — Y. определяется как некоторая функция от взвешенной суммы.
      y = f(s);
      Функция f — функция активации.

      Собственно КН классифицируются по их функциям активации.
      Пример
      • Пошаговая функция
      • K-шаговая
      • Сигмоидальная

        (сори за график :))
        Чаще всего имеет вид: f(x) = 1/(1+exp(-x)).


      Переход от пороговых функций к сигмоидальной связан с тем, что если S=-eps, то на выход дает 0, а если S=eps, то 1.
      То есть небольшая разница дает существенный результат, а это не есть хорошо.

      Все функции активации деляться на 2 группы:
      — симметричные
      — асимметричные



    На этом первая лекция закончилась.
    Думаю было интересно.

    До новых встреч!
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 84

      +1
      под хабракат пожалуйста
        0
        да-да, загнал. Спасибо
          +5
          «хабракат» это как «первыйнах», чесслово, утомили.
          +1
          хабракат!
            +4
            эх блин… Наверное я очень грубо выразился да еще плюс к этому и опоздал…
            попробую по другому…
            Уважаемый kalisto… Лично я не сомневаюсь что вам в институте понравилась эта лекция… Я допускаю, что она понравится и определенному кругу пользователей на хабре…
            Но прокручивать ее по адресу habrahabr.ru/new/ (а у нее достаточно не маленький размер), не очень приятно. На хабре есть хабракат под который можно спрятать большую часть несомненно полезной информации…
            Воспользуйтесь им пожалуйста…
              +1
              понял, исправил.
                +1
                спасибо… ;)
              +1
              ну вот… отписал уже что погорячился и извинился… и все равно минус… да и в карму кто-то плюнул… ну да ладно. Жизни еще длинная. Будем исправляться… :)
                0
                вот вам немного кармы для поднятия настроения :)
            • UFO just landed and posted this here
                0
                в википедии смотри :)
                0
                Читал Хайкина. Интересная, но тяжелая книга.

                И поправьте пожалуйста, его зовут Саймон и фамилия пишется через «и». Мало ли, кто то захочет купить :)
                  0
                  Хочу немного предостеречь читателей ру-изданий — там много ошибок и опечаток в переводе. Сверяйтесь в других книгах.
                  0
                  похоже на шпаргалку :(
                    0
                    Нейронные сети: ЛеКЦИЯ 1
                      0
                      Введение:)
                      +1
                      Это автор сделал что бы с кпк на экзамене шпорами пользоваться?
                        +1
                        Автор сделал чтобы другие люди почитали и ознакомились с НС с нуля, и самому повторить материал и лучше запомнить.
                          –1
                          с монитора это довольно трудно воспринимать.
                            +5
                            читайте на кпк
                        +1
                        Еще можно было бы добавить книгу поляка (или кто он там) Станислава Осовского — Нейронные сети для обработки информации.
                        lolbook.nnm.ru/osovskij_nejronnye_seti_dlya_obrabotki_informacii — никаких ресурсов не пеарю, просто тут про книжку написано
                          0
                          Ну я бы еще посоветовал книгу Д. Рутковской (да, той самой): «Нейронные сети, генетические алгоритмы и нечеткие системы». Можно почитать хотя бы ради ГА, но и про сами сети написано неплохо.
                          +1
                          А у меня убрали этот предмет =\

                          Спасибо вам, теперь будет стимул попробовать вникнуть хоть чуть-чуть.

                          Надеюсь будут и следующие лекции.
                          + Вам в карму.
                            0
                            Спасибо.
                            +2
                            Кстати, вроде есть тематический блог — ИИ называется, вот туда и можно перенести (http://habrahabr.ru/blogs/artificial_intelligence/)

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

                              нормальное описание есть у И. В. Заенцева «Нейронные сети: основные модели» — правда там формулы с ошибками ))) что уже выяснилось при написании программы

                              а вообще это довольно специфическая тема, и если честно непонятно зачем автор решил о ней написать…
                                +5
                                Ну и что, что специфичная? Отношение к IT имеет? Имеет и самое непосредственное. Не все же нам тут про гуглы и айфоны читать. Мне лично интересен данный материал. Самостоятельно бы не дошли руки поискать книги и т.д… А тут на тебе, все готовое, изложено с азов.
                                  +1
                                  я просто о том, что это конкретная отдельная тема, специализация. и при желании и необходимости, скачиваются книги, в которых все это описывается.

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

                                  просто то, что тут написано — написано в начале каждой! книжки или статьи о нейронных сетях. я их в свое время прочитала достаточно. и данный уровень написания не очень хорош, даже рисунки нарисованы небрежно…
                                    –5
                                    На вкус и цвет все фломастеры разные.
                                      0
                                      я не спорю. и начинание у вас хорошее…
                                      было бы качественней :)
                                      • UFO just landed and posted this here
                                          0
                                          сделать из первой главы записки статью? :))
                                          кстати идея :)
                                      +1
                                      Да-да, согласен с вами, оформлено весьма небрежно. А по поводу уровня изложения, тут, наверно вам виднее, т.к. для меня это первый более-менее подробный материал на эту тему. Просто первое, что выдают поисковики в плане книг и статей на тему НС, это какие-то книги для зубров от математики, коим я не являюсь. Честно пытался пару раз начать читать такие книги, но увидев трехэтажные формулы пугался и убегал)))
                                      Автор, я так понял, сам новичок в данной теме и, к тому же, студент, а не преподаватель. А значит умеет (ну или учится) слушать, а не излагать, поэтому сделаем ему скидку)) Будем надеется, что он учтет критику в свой адрес и примет меры))
                                    0
                                    Немного оффтопика: а какие нейросети вы использовали для распознавания образов, и какие именно образы вы распознавали?
                                      0
                                      обычная многослойная сеть с обучением по методу back propagarion
                                      распознавала я цифры
                                    +2
                                    Было бы круто если бы статья была снабжена примерами кода. А теории в принципе хватает на просторах интернета.
                                      +1
                                      лекции, видимо, еще не дошли до реализации программ
                                        –1
                                        и не дойдут.

                                        Теория на то и теория.

                                        а реализацию делает каждый в своих лабах
                                        +2
                                        Для любителей примеров и матлаба — простенькая штучка про распознание образов:
                                        [alphabet, targets]=prprob;
                                        i=1; %буква A
                                        ti=alphabet(:, i);
                                        letter{i}=reshape(ti,5,7)';
                                        letter{i};

                                        [R, Q]=size(alphabet);
                                        [S2, Q]=size(targets);

                                        S1=10;
                                        net=newff(minmax(alphabet),[S1 S2],{'logsig' 'logsig'},'traingdx');
                                        net.LW{2,1}=net.LW{2,1}*0.01;
                                        net.b{2}=net.b{2}*0.01;
                                        gensim(net);%

                                        % обучение без шума
                                        P=alphabet;
                                        T=targets;
                                        net.performfcn='sse';
                                        net.trainparam.goal=0.1;
                                        net.trainparam.show=100;
                                        net.trainparam.epochs=5000;
                                        net.trainparam.mc=0.95;
                                        [net, tr]=train(net, P, T);

                                        % обучение с шумом
                                        netn=net;
                                        netn.trainparam.goal=0.6;
                                        netn.trainparam.epochs=300;
                                        T=[targets targets targets targets];
                                        for pass=1:10
                                        P=[alphabet, alphabet,…
                                        (alphabet+randn(R, Q)*0.1),…
                                        (alphabet+randn(R, Q)*0.2)];
                                        [netn, tr]=train(netn, P, T);
                                        end

                                        % повторное обучение без шума
                                        netn.trainparam.goal=0.1;
                                        netn.trainparam.epochs=500;
                                        net.trainparam.show=10;
                                        [netn, tr]=train(netn, P, T);

                                        noisya=alphabet(:,1)+randn(35,1)*0.2;
                                        figure(1)
                                        plotchar(noisya);

                                        a=sim(net, noisya);
                                        a=compet(a);
                                        answer=find(compet(a)==1)
                                        figure(2)
                                        plotchar(alphabet(:, answer));
                                          0
                                          Есть определенное количество готового софта, которое решает задачи как средствами нейронных сетей, так и генных алгоритмов. Кстати эти эти подходы стоит рассматривать рядом, т.к. они оба из области нечеткой логики и имеют много общих достоинств (и недостатков, конечно)
                                            +2
                                            Это понятно, что софт есть, мне просто кажется, что раз в статье рассмотрен математический алгоритм построения нейронных сетей, было бы логично привести соответствующий код(желательно, который автор сам написал) на каком-нибудь распространенном языке(C, Python, Ruby, Haskell, эзотика вроде матлаба интересна слишком узкому кругу людей).
                                              0
                                              Насчёт экзотичности матлаба не соглашусь с Вами.
                                              Для каждой задачи — свой язык. Для людей, занимающихся нейронными сетями и прочими разделами machine learning, матлаб — такой же естественный инструмент, как PHP/Ruby для веб-разработчика.
                                            0
                                            Где-то у меня был диск с исходниками на С. Пишите по почте (или в IM) — попробую найти и переслать. Возможно даже где-то даже найдется скан книги, с которой шел диск с примерами.
                                              0
                                              Даже не так :)
                                              Я дам Вам ссылку на описание книги и архив с исходниками.

                                              Книга очень доходчивая, интересная, внутри рассмотрена теория с примерами (прям листинги по ходу глав).

                                              Возможно, Вы найдете эту книгу по названию (скана у меня точно нет, есть бумажный вариант, но если бы был — я бы обязательно поделился).

                                              Сам защищал дипломный магистерский проект по этой тематике. Тема стоящая внимания однозначно.
                                              0
                                              Спасибо, буду ждать продолжения.
                                                +1
                                                Может сделаете блог про нейронные сети?
                                                  +1
                                                  Переместил в искусственный интеллект
                                                    0
                                                    не знал что такой есть :)
                                                  +1
                                                  Спасибо, материал интересный. Только, хотелось бы попросить автора еще раз перечитать свой текст и все-таки исправить опечаток, коих, кстати довольно много. Труд, можно сказать научный, так что будем к нему подходить серьезно со всех сторон)
                                                    0
                                                    О, круто, хотел почитать про них, но руки все никак не доходили, теперь прочитаю точно.
                                                      +1
                                                      Может я зануда, но тут даже спелл-чекер не везде поможет…
                                                      она на английском, вторая также, чуть хуже изложена, но на русском.
                                                      понимать задачи, для которых задачу сформулировать невозможно
                                                      состоит из клеток — нейрон связанных друг с другом
                                                      Всё-таки нейронов.
                                                      Нейрон становиться активным, тогда. когда количество...
                                                      Точка, точка, запятая, — вышла рожица смешная… Ой, это же про смайлики.
                                                        0
                                                        я не понял что такое «КН», нигде не описанно вроде?
                                                          0
                                                          классический нейрон )
                                                            0
                                                            в статью бы это определение
                                                              0
                                                              оно почти там есть. но догадаться надо.


                                                              S = W0X0 + W1X1 + W2X2 +… + WnXn, где X0 = 1, W0 = O.
                                                              (классический нейрон)

                                                              В обобщённом КН…
                                                                0
                                                                когда я читал — не было, и картинок не было ;)
                                                          +1
                                                          Самое интересное, что идея-то не новая. В свое время теорией нейронных сетей занимались два больших НИИ в СССР. Но к сожалению, тогда не получив каких-либо «полезных результатов» (на тот момент из-за нехватки системных ресурсов), направление прикрыли (а кто знает может и продолжили, только перевели в разряд «секретно»). Тогда нейронным сетям пророчили большое будущее, возможность создания искусственного интеллекта и т.д. Но в итоге было доказано, чтобы создать что-то мыслящее на тот момент не хватало вычислительных мощностей аппаратуры. Кто знает, может вернувшись к этой теме, при наличии нынешних мощностей комп. техники, что-то и получится? Время покажет. Автору, спасибо.
                                                            0
                                                            К сожалению, с тех пор проблема не больно то и сдвинулась с места. Говоря простым языком: ИНС сейчас также близки к ИИ, как попытки наших предков имитировать птичьи крылья в попытках полететь.
                                                              0
                                                              Я когда-то работал в таком. НЦН РАН назывался и расшифровывался как Научный Центр Нейрокомпьютеров Российской Академии Наук (тогда уже Российской — 1992 год). Наша лаборатория мастерила язык программирования для нейрокомпьютеров, а точнее делала кальку с языка AXON по какой-то распечатке буржуйского описания этого языка.
                                                              0
                                                              молодец автор, пиши продолжение.
                                                                +4
                                                                Спасибо, интересно.
                                                                Кому интересно посмотреть на простенькую реализацию — вот моя небольшая статья с примером на python: Нейронная сеть Хопфилда
                                                                  0
                                                                  Забавный факт:
                                                                  Как известно, современные компьютеры используют последовательные вычисления, а нейронные сети — это подход параллельных вычислений и компьютеры в железе могут быть построены и на них.
                                                                  Так вот, то что мы пользуемся тем, чем пользуемся в некоторой степени случайность, т.к. до второй мировой разработка железа и под последовательные и под параллельные вычисления шла примерно одинаковыми темпами. Но первыми заказчиками оказались военные, а им нужна была точность при расчете баллистических траекторий.
                                                                  А ведь все могло быть совсем по другому…
                                                                    0
                                                                    Вы забываете, что нейросети не так универсальны, как набор реле и транзисторов.
                                                                      0
                                                                      Нейрокомпьютер тоже на реле с транзисторами можно сделать:-)
                                                                      А говоря о параллельных и последовательных вычислениях — у любого подхода есть свои сильные и слабые стороны. Но что такого принципиально не могут нейронные сети?
                                                                        0
                                                                        Они много чего могут. Вместе. А вот каждая в отдельности способна решать только одну задачу и то не сразу — ну куда это годится?
                                                                  • UFO just landed and posted this here
                                                                      0
                                                                      О вот это круто! А потом больше нейронными сетями не занимались?
                                                                      • UFO just landed and posted this here
                                                                        –5
                                                                        Подождите след. лекций.

                                                                        Препод у нас жесткий, скорее всего пойдут объемы мат. выкладок
                                                                        • UFO just landed and posted this here
                                                                            0
                                                                            ну тут она не как дополнение (мат часть). На следующей лекции, полагаю, будет идти речь о методах обучения нейронных сетей. Вот тут как раз без математики совсем не обойтись, чтобы понять, как же оно там работает и почему.
                                                                            • UFO just landed and posted this here
                                                                        0
                                                                        Интересный текст! Спасибо.
                                                                        Маленькая поправка: нейромедиатор
                                                                          +2
                                                                          Нейросети хороши, когда о задаче и данных мало известно изначально. Они очень абстрактно подходят к данным. Для кластеризации есть много алгоритмов более специфических, которые работают лучше нейросетей.
                                                                          То же касается устранения шума.

                                                                          Из моего опыта — если есть какие-то минимальные предположения о данных, можно найти более специальные, более подходящие алгоритмы. Но если предположений нет, НС это хороший инструмент, который полезно иметь на своей «полке»
                                                                            0
                                                                            Когда изначально мало данных, то не на чем обучать сеть (мала обучающая выборка), так что она не будет выдавать желаемый результат. Хотя есть такое понятие как «обучение с учителем», когда пользоватеь сам говорит насколько это близко к тому что он хотел получить. Но опять же ресурсы… не машинные, но человеческие
                                                                              +2
                                                                              Я имел в виду ситуацию, когда мало не самих данных, а информации о их структуре. Ну например есть какой-то большой массив многомерных данных, никаких предположений о их внутренней организации — на первую прикидку можно использовать нейросеть типа карты Кохонена, чтобы заценить что из себя данные представляют, увидеть какие-то закономерности, если повезет.

                                                                              Но для одних случаев простые деревья решений дают намного лучший, устойчивый и наглядный результат чем нейросети. Для более сложных случаев — классный метод кластеризации SP-clustering.
                                                                              В общем не стоить ждать от нейросетей чудес. Хотя идея сама по себе красивая.
                                                                                0
                                                                                Насчёт деревьев согласен. К тому же имея большой объем данных, и не имея информации о структуре легко «переобучить» сеть, так что можно пропустить тот момент когда она будет не просто преобразовывать входные данные, но сама начнёт вносить ошибку в результат.
                                                                              +1
                                                                              Господа, не забывайте, что вы ведете разговор не о самих нейронных сетях, а о программных нейроимитаторах. Сама концепция, а именно преимущества, нейронных сетей заключаются в параллельной обработке входных сигналов (данных). Поэтому не стоит делать поспешных выводов о целесообразности применения ИНС в той или иной задаче.
                                                                              0
                                                                              Для меня как для человека, который о НС только слышал, статья оказалась не совсем понятной. Есть ряд вещей, которые автор упомянул, но не раскрыл хотя бы небольшим примером. Примеры(лучше из жизни) всегда делают лекцию более живой, понятной и более усваиваемой. Надеюсь автор это учтет при написании лекции №2.
                                                                              В целом — лекция понравилась.
                                                                                0
                                                                                Спасибо за статью! Единственно непонятно почему не склоняются термины (которые выделены жирным). Наверное в этом есть какой-то смысл при индексировании и запоминании, но читать неприятно.
                                                                                  0
                                                                                  Замечательно. Спасибо большое.
                                                                                  У нас тоже этот предмет есть, но лекторр чтото увлекся введениями и ничего толкового ещё не рассказал.
                                                                                    +2
                                                                                    Даю ссылку на архив с нормальными иллюстрациями к статье. Файлы в формате EPS, созданные в Люстре CS3. Надеюсь, что вы знаете что с ними делать, если я где-то ошибся, например в графике сигмоидальной функции.

                                                                                    Ну и сама картинка со всеми иллюстрациями:
                                                                                      0
                                                                                      спасибо
                                                                                      0
                                                                                      Картинки только у меня не грузятся?

                                                                                      Only users with full accounts can post comments. Log in, please.