Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Физика / Fizika.docx
Скачиваний:
1
Добавлен:
18.08.2022
Размер:
39.18 Кб
Скачать

Введение (Илья)

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

ИНС представляют из себя систему объединенных и взаимодействующих между собой простых процессоров (искусственных нейронов). Подобные процессоры как правило довольно-таки просты, в особенности в сравнении с процессорами, используемыми в личных компьютерах. Любой процессор подобной сети имеет дело только лишь с сигналами, которые он регулярно получает, и сигналами, которые он периодически отправляет другим процессорам. И тем не менее, будучи соединёнными в достаточно значительную сеть с контролируемым взаимодействием, такие локально элементарные процессоры в совокупности способны выполнять довольно непростые задачи. 

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

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

История (Илья)

Невзирая на то, что нейросети попали в центр общего внимания относительно недавно, это один из древнейших алгоритмов машинного обучения. 1-Ая версия формального нейрона, ячейки нейронной сети, была предложена Уорреном Маккалоком и Уолтером Питтсом в 1943 г.. А уже в 1958 г. Фрэнк Розенблатт создал первую нейронную сеть. Невзирая на собственную простоту, она уже имела возможность различать, к примеру, объекты в двухмерном пространстве.

Начальные успехи привлекли повышенную заинтересованность к технологии, но впоследствии другие алгоритмы машинного обучения стали демонстрировать лучшие результаты, и нейросети отошли на следующий план. Последующая волна заинтересованности пришлась на 1990-е года, уже после чего о нейросетях практически не было слышно вплоть до 2010 годов. [2]

Такого рода продолжительный перерыв связан с тем, что вплоть до 2010 года не существовало столь крупных баз данных, для того чтобы на должном уровне обучить нейросети решать конкретные задачи, в основном связанные с распознаванием и классификацией изображений. Собственно, что и приводило к учащенным ошибкам нейросети: путали кошку с собакой, либо фотоснимок здорового органа со снимком органа, пораженного опухолью. Однако в 2010 г. появлялась база ImageNet, включающая 15 млн. изображений в 22 тысячах категорий. ImageNet неоднократно превышала размер существовавших баз данных изображений и была доступна для каждого исследователя. С подобными объемами сведений нейросети можно было приучать принимать практически безошибочные заключения. До этого на пути формирования нейросетей стояла иная, никак не менее существенная, проблема: классический метод обучения был неэффективен.

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

И, все же прогресс до 2010 года был, так как в 2006 г. 3 независимых группы ученых рекомендовали собственные решения этой задачи. Во-первых, Джеффри Хинтон реализовал предобучение сети при помощи машины Больцмана, обучая каждый слой в отдельности. Во-вторых, Ян ЛеКан внес предложение использование сверточной нейронной сети с целью решения вопросов распознавания изображений. В конечном итоге, Иошуа Бенджио разработал каскадный автокодировщик, позволивший использовать все без исключения слои в глубокой нейронной сети.

Устройство (Егор)

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

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

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

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

Такая коллективная активность способствует рождению в сознании человека восприятий и мыслей. Взаимодействия нейронных сетей, смоделированных при помощи компьютера, и есть искусственной нейронной сетью. Первая математическая модель искусственного нейрона была известна еще в далеком 1943 году, предложена она была Уорреном Мак-Каллоком и Уолтером Питтсом, однако возможность их активного применения появилась только в конце двадцатого столетия.

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

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

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

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

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

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

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

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

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

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

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

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

(Дальше Настя)

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

Из точек на плоскости и соединений между ними можно построить множество графических фигур, называемых графами. Если каждую точку представить себе как один нейрон, а соединения между точками – как дендриты и синапсы, то мы получим нейронную сеть. Но не всякое соединение нейронов будет работоспособно или вообще целесообразно. Поэтому на сегодняшний день существует только несколько работающих и реализованных программно архитектур нейросетей. Я только вкратце опишу их устройство и классы решаемых ими задач. По архитектуре связей нейросети могут быть сгруппированы в два класса: сети прямого распространения, в которых связи не имеют петель ( см. рис. 3), и сети рекуррентного типа, в которых возможны обратные связи(см. рис. 4) Сети прямого распространения подразделяются на однослойные перцепротроны (сети) и многослойные перцептроны (сети). Название перцептрона для нейросетей придумал американский нейрофизиолог Ф. Розенблатт , придумавший в 1957 году первый нейропроцессорный элемент (НПЭ) , то есть нейросеть. Он же доказал сходимость области решений для перцептрона при его обучении. Сразу после этого началось бурное исследование в этой области и был создан самый первый нейрокомпьютер Mark I. Многослойные сети отличаются тем, что между входными и выходными данными располагаются несколько так называемых скрытых слоев нейронов, добавляющих больше нелинейных связей в модель. Рассмотрим устройство простейшей многослойной нейросети. Любая нейронная сеть состоит из входного слоя и выходного слоя. Соответственно подаются независимые и зависимые переменные. Входные данные преобразуются нейронами сети и сравниваются с выходом. Если отклонение больше заданного, то специальным образом изменяются веса связей нейронов между собой и пороговые значения нейронов. Снова происходит процесс вычислений выходного значения и его сравнение с эталоном. Если отклонения меньше заданной погрешности, то процесс обучения прекращается. Помимо входного и выходного слоев в многослойной сети существуют так называемые скрытые слои. Они представляют собой нейроны, которые не имеют непосредственных входов исходных данных, а связаны только с выходами входного слоя и с входом выходного слоя. Таким образом, скрытые слои дополнительно преобразуют информацию и добавляют нелинейности в модели. Если однослойная нейросеть очень хорошо справляется с задачами классификации, так как выходной слой нейронов сравнивает полученные от предыдущего слоя значения с порогом и выдает значение либо ноль, то есть меньше порогового значения, либо единицу - больше порогового (для случая пороговой внутренней функции нейрона), и не способен решать большинство практических задач( что было доказано Минским и Пейпертом), то многослойный перцептрон с сигмоидными решающими функциями способен аппроксимировать любую функциональную зависимость (это было доказано в виде теоремы). Но при этом не известно ни нужное число слоев, ни нужное количество скрытых нейронов, ни необходимое для обучения сети время. Эти проблемы до сих пор стоят перед исследователями и разработчиками нейросетей. Лично мне кажется, что весь энтузиазм в применении нейросетей строится именно на доказательстве этой теоремы. Впоследствии я сам покажу, как нейроны могут моделировать различные классы функций, но я не претендую на полноту доказательства. Класс рекуррентных нейросетей гораздо обширнее, да и сами сети сложнее по своему устройству. Поведение рекуррентных сетей описывается дифференциальными или разностными уравнениями, как правило, первого порядка. Это гораздо расширяет области применения нейросетей и способы их обучения. Сеть организована так, что каждый нейрон получает входную информацию от других нейронов, возможно, и от самого себя, и от окружающей среды. Этот тип сетей имеет важное значение, так как с их помощью можно моделировать нелинейные динамические системы. (Дальше Оля)

Обучение многослойной сети

На этапе обучения происходит вычисление синаптических коэффициентов в процессе решения нейронной сетью задач, в которых нужный ответ определяется не по правилам, а с помощью примеров, сгруппированных в обучающие множества. Так что нейросеть на этапе обучения сама выполняет роль эксперта в процессе подготовки данных для построения экспертной системы. Предполагается, что правила находятся в структуре обучающих данных. Для обучения нейронной сети требуются обучающие данные. Они должны отвечать свойствам представительности и случайности или последовательности. Все зависит от класса решаемой задачи. Такие данные представляют собой ряды примеров с указанием для каждого из них значением выходного параметра, которое было бы желательно получить. Действия, которые при этом происходят, можно назвать контролируемым обучением: "учитель" подаем на вход сети вектор исходных данных, а на выходной узел сообщает желаемое значение результата вычислений. Контролируемое обучение нейросети можно рассматривать как решение оптимизационной задачи. Ее целью является минимизация функции ошибок Е на данном множестве примеров путем выбора значений весов W. Достижение минимума называется сходимостью процесса обучения. Поскольку ошибка зависит от весов нелинейно, получить решение в аналитической форме невозможно, и поиск глобального минимума осуществляется посредством итерационного процесса- так называемого обучающего алгоритма. Разработано уже более сотни разных обучающих алгоритмов, отличающихся друг от друга стратегией оптимизации и критерием ошибок. Обычно в качестве меры погрешности берется средняя квадратичная ошибка (СКО):

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

Здесь e - определяемый пользователем параметр, который называется коэффициентом обучения.

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

Как происходит распознание образов

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

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

Применение и заключение (Антон)

Соседние файлы в папке Физика