пятница, 3 января 2020 г.

Искусственные нейронные сети.


Приветствуем вас, юные IT магнаты! Сегодня речь пойдёт про искусственные нейронные сети. А имен­но про то, что это такое и с чем это едят. Причём сначала опишем ис­кус­ст­вен­ные ней­рон­ные сети прос­ты­ми словами и в общих чертах, а потом подробно разберём их ар­хи­тек­ту­ру и виды. Кроме того, вы уз­на­е­те, где их можно при­ме­нять, и почему сов­ре­мен­ные нейронные сети так же далеки от ис­кус­ст­вен­но­го ин­тел­лек­та, как мушкет от атом­ной бомбы. Так что, если вы искали, с чего начать изучение ней­рон­ных сетей, то вы попали куда надо! Тем более что вся пред­став­лен­ная ин­фор­ма­ция под­креп­ле­на ссыл­ка­ми на на­уч­ные ис­сле­до­ва­ния, пос­мот­реть которые можно внизу статьи в ис­точ­ни­ках. Итак, поехали!

НЕЙРОННЫЕ СЕТИ
Искусственные нейронные сети – это ма­те­ма­ти­чес­кая си­му­ля­ция би­о­ло­ги­чес­ко­го мозга [1]. Соб­ст­вен­но, поэтому они так и на­зы­ва­ют­ся. Ведь мозг и пред­став­ля­ет собой нейронную сеть [2]. И далее вы уви­ди­те, что работа и обу­че­ние ис­кус­ст­вен­ных ней­рон­ных сетей иден­тич­на обу­че­нию и работе нашего мозга. Вот почему струк­тур­ные эле­мен­ты их ар­хи­тек­ту­ры и на­зы­ва­ют­ся подобно струк­тур­ным эле­мен­там го­лов­но­го мозга. Но ошибкой было бы думать, что ис­кус­ст­вен­ные ней­рон­ные сети подобны ис­кус­ст­вен­но­му ин­тел­лек­ту. Это не так! Для соз­да­ния ис­кус­ст­вен­но­го ин­тел­лек­та не­дос­та­точ­но ком­пью­тер­но­го кода. Для него нужно особое «же­ле­зо» [3].
Современные искусственные нейронные сети могут рас­поз­на­вать изоб­ра­же­ния [4], клас­си­фи­ци­ро­вать данные [5], при­ни­мать уп­рав­лен­чес­кие решения [6], рас­поз­на­вать голос [7], играть в ком­пью­тер­ные игры [8] и, вообще, спо­соб­ны на многое! И, ко­неч­но, в ка­ком-то за­ча­точ­ном виде они яв­ля­ют­ся ис­кус­ст­вен­ным ин­тел­лек­том. Но если вы хотите получить нас­то­я­щий аналог че­ло­ве­чес­ко­го соз­на­ния, то вам нужны фи­зи­чес­кие ис­кус­ст­вен­ные ней­ро­ны [3]. Просто потому, что мощная ис­кус­ст­вен­ная ней­рон­ная сеть на обычном «же­ле­зе» будет пот­реб­лять чрез­мер­но много энергии [9]. Хотя прин­цип их работы иден­ти­чен. Вот да­вай­те раз­бе­рём­ся, в чём он состоит!

Архитектура нейронных сетей

  1. Нейрон – это блок обработки ин­фор­ма­ции, яв­ля­ю­щий­ся струк­тур­ной еди­ни­цей ней­рон­ной се­ти. Каж­дый ней­рон мо­жет при­ни­мать вход­ной сиг­нал, об­ра­ба­ты­вать сиг­на­лы, при­да­вая им «вес», и, на­ко­нец, вы­да­вать вы­ход­ные дан­ные.
  2. Простейший и наиболее рас­прост­ра­нён­ный тип ар­хи­тек­ту­ры ней­ро­на на­зы­ва­ет­ся «се­тью пря­мо­го рас­прос­т­ра­не­ния» (FFNN). Струк­тур­но он сос­то­ит из: вход­но­го ней­ро­на, скры­то­го ней­ро­на и вы­ход­но­го ней­ро­на. На ри­сун­ке ни­же (рис. 1) ней­ро­ны пред­став­ле­ны в ви­де круж­ков. Жёл­тые круж­ки – это вход­ные ней­ро­ны (x). Зе­лё­ные круж­ки – это скры­тые ней­ро­ны. Крас­ные круж­ки – это вы­ход­ные ней­ро­ны (y). А стре­лоч­ка­ми меж­ду ни­ми обоз­на­че­ны си­нап­сы (w), ко­то­рым мо­жет быть за­дан раз­ный «вес». И от не­го за­ви­сит удель­ный вес вли­я­ния каж­до­го вход­но­го ней­ро­на на зна­че­ние вы­ход­но­го ней­ро­на.
  3. В общем виде так работают все ис­кус­ст­вен­ные ней­рон­ные се­ти. Но в дан­ном слу­чае этот про­цесс на­и­бо­лее наг­ля­ден, по­то­му что все рас­чё­ты идут в од­ном нап­рав­ле­нии: от вход­но­го ней­ро­на че­рез скры­тые ней­ро­ны к вы­ход­но­му ней­ро­ну [10]. А в ар­хи­тек­ту­ру бо­лее слож­ных ней­рон­ных се­тей так же вхо­дят дру­гие ви­ды ней­ро­нов, но о них мы го­во­рить се­год­ня не бу­дем.

Разные искусственные нейронные сети

ИСКУССТВЕННЫЕ НЕЙРОННЫЕ СЕТИ

Зачем нейронам нужен вес?

Искусственные нейронные сети оперируют числами в ди­а­па­зо­не [01] или [-11]. Поэтому для расчёта степени влияния каждого от­дель­но­го фактора нужно про­вес­ти процесс нор­ма­ли­за­ции [11]. Нор­ма­ли­за­ция – это и есть процесс прис­ва­и­ва­ния «веса» каж­до­му нейрону. Пос­ред­с­т­вом чего в скрытых нейронах удаётся рас­счи­тать влияние каж­до­го па­ра­мет­ра. Но ито­го­вые значения входных и вы­ход­ных нейронов на­хо­дят­ся в ди­а­па­зо­не [01] или [-11]. А ма­те­ма­ти­чес­кая фор­му­ла, через которую можно вы­ра­зить ис­кус­ст­вен­ную ней­рон­ную сеть, в общем виде выг­ля­дит так: ​y=f(s)​, где ​s=Nj=1wjxj​, где
N – это ко­ли­чест­во вводных данных
f() – это функция активации процесса об­ра­бот­ки данных, вклю­ча­ю­щая в себя ли­мит ите­ра­ций. То есть лимит ко­ли­чест­ва обу­ча­ю­щих циклов ис­кус­ст­вен­ной ней­рон­ной сети.
 – это сум­ми­ро­ва­ние значений вход­ных нейронов, ум­но­жен­ных на зна­че­ния синапсов.
Wj – это зна­че­ние каждого синапса (w1, w2, w3,… wN)
Xj – это зна­че­ние каждого вход­но­го нейрона (x1, x2, x3,… xN)
y – зна­че­ние вы­ход­но­го нейрона

Пример нейронной сети

Допустим, что нам нужно решить, чем заняться вечером. Сами мы никак не мо­жем при­нять ре­ше­ние, по­э­то­му решили создать ней­рон­ную сеть, которая сде­ла­ет это за нас. До­пус­тим, что мы ис­хо­дим из 3 па­ра­мет­ров: (1) желания встре­тить­ся с друзь­я­ми [1], (2) не­же­ла­ния тра­тить деньги [-1] и (3) не­же­ла­ния ссо­рить­ся со своей де­вуш­кой [-1]. Со­от­вет­с­т­вен­но, ре­ше­ние о том, идти пить пиво [1] или ос­тать­ся дома [-1], за­ви­сит от веса па­ра­мет­ров. Нап­ри­мер, если у па­ра­мет­ра 1 вес будет боль­ше, чем в сумме у па­ра­мет­ров 2 и 3, то мы пой­дём пить пиво [1]. А если вес 1 будет мень­ше, чем в сум­ме у 2 и 3 па­ра­мет­ра, то мы ос­та­нем­ся дома с де­вуш­кой [-1].
ПРИМЕР НЕЙРОННОЙ СЕТИ

Обучение искусственной нейронной сети

Настройка нейронных сетей осуществляется так же, как и обу­че­ние че­ло­ве­ка – через опыт [12]. В случае с ис­кус­ст­вен­ны­ми ней­рон­ны­ми сетями наиболее по­пу­ляр­ным ме­то­дом обу­че­ния яв­ля­ет­ся метод об­рат­но­го рас­прост­ра­не­ния (back­pro­pa­ga­tion[13]. Он пред­по­ла­га­ет вы­чис­ле­ние гра­ди­ен­та функции по всем весам, с пос­ле­ду­ю­щей их оп­ти­ми­за­цией. Каждый такой «тре­ни­ро­воч­ный подход» на­зы­ва­ет­ся эпохой или ите­ра­цией. И, со­от­вет­с­т­вен­но, чем выше эпоха, тем лучше на­тре­ни­ро­ва­на сеть [14]. Но если тре­ни­ро­вать её слишком долго, то она может «сой­ти с ума». Нап­ри­мер, если ей долго по­ка­зы­вать крас­ные яблоки, то она может начать счи­тать все крас­ные круг­лые пред­ме­ты яб­ло­ка­ми.
НЕЙРОСЕТИ
Градиент функции – это вектор, определяющий нап­рав­ле­ние на гра­фи­ке или по­верх­нос­ти. Со­от­вет­с­т­вен­но, нашей целью яв­ля­ет­ся найти такой гра­ди­ент, который будет вы­да­вать всё более и более низкий процент ошибок с каж­дой пос­ле­ду­ю­щей эпо­хой. Хотя это и не ли­ней­ный процесс. Пред­с­тавь­те себе аме­ри­кан­с­кие гор­ки. Там есть ло­каль­ные мак­си­му­мы и ми­ни­му­мы. И если вы в низине, то это не зна­чит, что вам не сле­ду­ет под­ни­мать­ся на гору, чтобы дос­тичь ещё более глу­бо­кой низины. Но на наших «аме­ри­кан­с­ких горках» есть го­ры, иду­щие только вверх. По­э­то­му «те­леж­ке» нужно задать оп­ти­маль­ный им­пульс (mo­men­tum). И если всё сде­ла­но пра­виль­но, то, в итоге, уда­ёт­ся найти такое зна­че­ние «ве­сов», ко­то­рое, в идеале, вы­да­ёт 0% ошибок.
ОБУЧЕНИЕ НЕЙРОННОЙ СЕТИ
Соответственно, искусственные нейронные сети, как пра­ви­ло, обу­ча­ют «с учи­те­лем». То есть прог­рам­мист за­да­ёт ре­зуль­тат, к ко­то­ро­му в итоге должна на­у­чить­ся при­хо­дить ней­рон­ная сеть. Но так же есть ме­то­до­ло­гия обу­че­ния «без учителя» и обу­че­ние «с по­ощ­ре­ни­ем». Первый способ, как пра­ви­ло, ис­поль­зу­ет­ся в самых прос­тых задачах типа груп­пи­ров­ки дан­ных, а второй – в на­и­бо­лее слож­ных за­да­чах. Суть второго спо­со­ба в по­ощ­ре­нии ней­рон­ной сети при дос­ти­же­нии же­ла­е­мо­го вами ре­зуль­та­та. При этом способ по­лу­че­ния ре­зуль­та­та ис­кус­ст­вен­ной ней­рон­ной сетью вы не конт­ро­ли­ру­е­те. Ну а под­роб­нос­ти обучения ней­рон­ных сетей давайте ос­та­вим на сле­ду­ю­щий раз! Потому что моя сеть на­чи­на­ет «за­ки­пать».
P.S. Бла­го­да­рим за вни­ма­ние! На­де­ем­ся, что ста­тья бы­ла ин­те­рес­на и поз­на­ва­тель­на. Ес­ли у вас ос­та­лись ка­кие-ли­бо воп­ро­сы, есть за­ме­ча­ния или вы хо­ти­те выс­ка­зать сло­ва бла­го­дар­нос­ти, то для все­го это­го мож­но вос­поль­зо­вать­ся фор­мой ком­мен­та­ри­ев ни­же. Оце­ни­вай­те ста­тью, де­ли­тесь ею с друзь­я­ми в со­ци­аль­ных се­тях, до­бав­ляй­те сайт в из­бран­ное и бо­ри­тесь с мра­ко­бе­си­ем во всех его про­яв­ле­ни­ях, аминь!

Комментариев нет:

Отправить комментарий