Как создать новые нейронные связи? Какие факторы способствуют нейрогенезу


Привет всем читателям Habrahabr, в этой статье я хочу поделиться с Вами моим опытом в изучении нейронных сетей и, как следствие, их реализации, с помощью языка программирования Java, на платформе Android. Мое знакомство с нейронными сетями произошло, когда вышло приложение Prisma. Оно обрабатывает любую фотографию, с помощью нейронных сетей, и воспроизводит ее с нуля, используя выбранный стиль. Заинтересовавшись этим, я бросился искать статьи и «туториалы», в первую очередь, на Хабре. И к моему великому удивлению, я не нашел ни одну статью, которая четко и поэтапно расписывала алгоритм работы нейронных сетей. Информация была разрознена и в ней отсутствовали ключевые моменты. Также, большинство авторов бросается показывать код на том или ином языке программирования, не прибегая к детальным объяснениям.
Поэтому сейчас, когда я достаточно хорошо освоил нейронные сети и нашел огромное количество информации с разных иностранных порталов, я хотел бы поделиться этим с людьми в серии публикаций, где я соберу всю информацию, которая потребуется вам, если вы только начинаете знакомство с нейронными сетями. В этой статье, я не буду делать сильный акцент на Java и буду объяснять все на примерах, чтобы вы сами смогли перенести это на любой, нужный вам язык программирования. В последующих статьях, я расскажу о своем приложении, написанном под андроид, которое предсказывает движение акций или валюты. Иными словами, всех желающих окунуться в мир нейронных сетей и жаждущих простого и доступного изложения информации или просто тех, кто что-то не понял и хочет подтянуть, добро пожаловать под кат. Первым и самым важным моим открытием был плейлист американского программиста Джеффа Хитона, в котором он подробно и наглядно разбирает принципы работы нейронных сетей и их классификации. После просмотра этого плейлиста, я решил создать свою нейронную сеть, начав с самого простого примера. Вам наверняка известно, что когда ты только начинаешь учить новый язык, первой твоей программой будет Hello World. Это своего рода традиция. В мире машинного обучения тоже есть свой Hello world и это нейросеть решающая проблему исключающего или(XOR). Таблица исключающего или выглядит следующим образом:

abc
000
011
101
110

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

Что такое нейронная сеть?

Нейронная сеть — это последовательность нейронов, соединенных между собой синапсами. Структура нейронной сети пришла в мир программирования прямиком из биологии. Благодаря такой структуре, машина обретает способность анализировать и даже запоминать различную информацию. Нейронные сети также способны не только анализировать входящую информацию, но и воспроизводить ее из своей памяти. Заинтересовавшимся обязательно к просмотру 2 видео из TED Talks: Видео 1, Видео 2). Другими словами, нейросеть это машинная интерпретация мозга человека, в котором находятся миллионы нейронов передающих информацию в виде электрических импульсов.

Блог / Как психотерапия меняет ваш мозг (в лучшую сторону)

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

Звучит сложновато? Сейчас объясним.

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

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

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

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

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

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

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

Когда мы переводим чувства в слова, мы фактически переводим язык правого полушария на язык левого. Правое полушарие сродни бессознательному Фрейда, в котором варятся эмоциональные, сенсорные, двигательные, довербальные переживания. Левое полушарие – центр логики, речи и мышления. Многие психиатрические расстройства, по мнению ученых, коррелируют с нарушением связи между правым и левым полушариями.

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

Для чего нужны нейронные сети?

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

— распределение данных по параметрам. Например, на вход дается набор людей и нужно решить, кому из них давать кредит, а кому нет. Эту работу может сделать нейронная сеть, анализируя такую информацию как: возраст, платежеспособность, кредитная история и тд.

Предсказание

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

Распознавание

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

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

Мозг и халява

Почему мы часто ищем легкие пути в решении проблем, в том числе «легкие» деньги и халяву?

Потому что мозг создавался не для того чтобы напряженно трудиться.

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

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

Фото: Myfin.by

А истоки тяги к «халяве» и их последствиях демонстрирует один эксперимент. Детям предлагали взять одно лакомство сейчас или два лакомства, но попозже. Подавляющее большинство тех, кто предпочел взять одно лакомство сейчас, во взрослой жизни не сумели достичь серьезной финансовой состоятельности. Такой же тест ученые проводили и со взрослыми, только вместо зефира были деньги. Выяснилось, что люди, которые выбрали меньшие деньги, больше полагаются на лимбическую систему ― именно ее активность отвечает за тягу к халяве.

Можно ли преодолеть эту склонность?

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

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

Что такое нейрон?


Нейрон — это вычислительная единица, которая получает информацию, производит над ней простые вычисления и передает ее дальше. Они делятся на три основных типа: входной (синий), скрытый (красный) и выходной (зеленый). Также есть нейрон смещения и контекстный нейрон о которых мы поговорим в следующей статье. В том случае, когда нейросеть состоит из большого количества нейронов, вводят термин слоя. Соответственно, есть входной слой, который получает информацию, n скрытых слоев (обычно их не больше 3), которые ее обрабатывают и выходной слой, который выводит результат. У каждого из нейронов есть 2 основных параметра: входные данные (input data) и выходные данные (output data). В случае входного нейрона: input=output. В остальных, в поле input попадает суммарная информация всех нейронов с предыдущего слоя, после чего, она нормализуется, с помощью функции активации (пока что просто представим ее f(x)) и попадает в поле output.


Важно помнить

, что нейроны оперируют числами в диапазоне [0,1] или [-1,1]. А как же, вы спросите, тогда обрабатывать числа, которые выходят из данного диапазона? На данном этапе, самый простой ответ — это разделить 1 на это число. Этот процесс называется нормализацией, и он очень часто используется в нейронных сетях. Подробнее об этом чуть позже.

Две системы

Поясните, как вообще устроен наш мозг и как его отделы влияют на наше отношение к деньгам?

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

Лимбическая система – это наши эмоции, древняя часть мозга, которая действует интуитивно и мгновенно, еще до того, как мы успеем что-либо осознать. Когда наши предки еще не обладали сложными системами анализа, она помогала им принимать решения.

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

Фото: Myfin.by

Префронтальная кора – это новая часть мозга. Более «умная», но и более медленная, ленивая и энергозатратная. Это высший когнитивный центр, который отвечает за концентрацию внимания и помогает держать лимбическую систему под контролем. Кроме того, здесь мозг хранит необходимую информацию для решения текущих задач. Грубо говоря, это наш интеллект.

Что такое синапс?


Синапс это связь между двумя нейронами. У синапсов есть 1 параметр — вес. Благодаря ему, входная информация изменяется, когда передается от одного нейрона к другому. Допустим, есть 3 нейрона, которые передают информацию следующему. Тогда у нас есть 3 веса, соответствующие каждому из этих нейронов. У того нейрона, у которого вес будет больше, та информация и будет доминирующей в следующем нейроне (пример — смешение цветов). На самом деле, совокупность весов нейронной сети или матрица весов — это своеобразный мозг всей системы. Именно благодаря этим весам, входная информация обрабатывается и превращается в результат.
Важно помнить

, что во время инициализации нейронной сети, веса расставляются в случайном порядке.

Гормоны, деньги и мозг

Андрей, а что еще влияет на отношение к деньгам?

Миндалевидное тело (отвечает за страх и агрессию), поясная извилина (является детектором ошибок и отвечает за конформизм), и гиппокамп (отвечает за кратковременную память).

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

А гормоны?

Да, и они тоже. Чтобы стать успешным, нужно быть активным, а для энергии нам нужна активность ретикулярной формации – это скопление нейронов, которое обеспечивает нас энергией. Кроме того, эта область отвечает за секрецию ряда гормонов, например, серотонина – «гормона счастья», который обеспечивает стрессоустойчивость. Дофамин выделяется, когда человек, с его точки зрения, поступает верно, и дарит нам ощущение уверенности и логичности окружающего мира.

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

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

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

Как работает нейронная сеть?


В данном примере изображена часть нейронной сети, где буквами I обозначены входные нейроны, буквой H — скрытый нейрон, а буквой w — веса. Из формулы видно, что входная информация — это сумма всех входных данных, умноженных на соответствующие им веса. Тогда дадим на вход 1 и 0. Пусть w1=0.4 и w2 = 0.7 Входные данные нейрона Н1 будут следующими: 1*0.4+0*0.7=0.4. Теперь когда у нас есть входные данные, мы можем получить выходные данные, подставив входное значение в функцию активации (подробнее о ней далее). Теперь, когда у нас есть выходные данные, мы передаем их дальше. И так, мы повторяем для всех слоев, пока не дойдем до выходного нейрона. Запустив такую сеть в первый раз мы увидим, что ответ далек от правильно, потому что сеть не натренирована. Чтобы улучшить результаты мы будем ее тренировать. Но прежде чем узнать как это делать, давайте введем несколько терминов и свойств нейронной сети.

Функция активации

Функция активации — это способ нормализации входных данных (мы уже говорили об этом ранее). То есть, если на входе у вас будет большое число, пропустив его через функцию активации, вы получите выход в нужном вам диапазоне. Функций активации достаточно много поэтому мы рассмотрим самые основные: Линейная, Сигмоид (Логистическая) и Гиперболический тангенс. Главные их отличия — это диапазон значений.
Линейная функция


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

Сигмоид


Это самая распространенная функция активации, ее диапазон значений [0,1]. Именно на ней показано большинство примеров в сети, также ее иногда называют логистической функцией. Соответственно, если в вашем случае присутствуют отрицательные значения (например, акции могут идти не только вверх, но и вниз), то вам понадобиться функция которая захватывает и отрицательные значения.

Гиперболический тангенс


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

Эпоха

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


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

Ошибка

Ошибка — это процентная величина, отражающая расхождение между ожидаемым и полученным ответами. Ошибка формируется каждую эпоху и должна идти на спад. Если этого не происходит, значит, вы что-то делаете не так. Ошибку можно вычислить разными путями, но мы рассмотрим лишь три основных способа: Mean Squared Error (далее MSE), Root MSE и Arctan. Здесь нет какого-либо ограничения на использование, как в функции активации, и вы вольны выбрать любой метод, который будет приносить вам наилучший результат. Стоит лишь учитывать, что каждый метод считает ошибки по разному. У Arctan, ошибка, почти всегда, будет больше, так как он работает по принципу: чем больше разница, тем больше ошибка. У Root MSE будет наименьшая ошибка, поэтому, чаще всего, используют MSE, которая сохраняет баланс в вычислении ошибки.
MSE

Root MSE

Arctan


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

Рейтинг
( 2 оценки, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]