Что такое синапс в информатике
Синаптические веса в нейронных сетях – просто и доступно
Этой статьей начинается серия статей, рассказывающих просто и доступно о нейронных сетях и искусственном интеллекте.
Автоматические методы обучения искусственных нейронных сетей совершенствуются постоянно. Уже сейчас автоматизм достиг такого уровня, что начальные значения весов можно задавать любые. Действительно, компьютерная программа будет постепенно корректировать веса в сторону уменьшения ошибки, и откуда начинать – не так уж и важно. Чем дальше начальная совокупность от решения, тем больше времени пройдет, вот и вся разница. Все близко к тому, что нажал кнопку, пошел в бассейн, пришел – сеть обучена. Если сеть посерьезнее, то нажал кнопку, уехал в отпуск, приехал через две недели – сеть обучена. Перед нажатием кнопки нужно только архитектуру задать. Хотя программы могут уже сами корректировать архитектуру сети, все более и более автоматизируясь. Так, с некоторой точки зрения, совокупность весов, а также методы их подбора, могут быть некими черными ящиками, в которых что-то как-то происходит и на выходе получаем допустимый уровень ошибки. Есть случаи, когда никто и не ожидал наличия закономерностей, а черный ящик взял и нашел. Например, в сеть заложили параметры – рост и вес. И результат – мужчина/женщина. Сеть самообучилась и выявила закономерность, и смогла на тестовой выборке достаточно точно определять, это мужчина или женщина. Хотя до этого никто и не задумывался именно об этой закономерности. Так что в принципе, можно совсем не изучать этот вопрос, полностью полагаясь на математическую теорию и компьютерное моделирование.
С другой стороны, часть специалистов предпочитает владеть своим вопросом в совершенстве, переходя ко все более усложняющимся задачам. В таких случаях понимание сути синаптических весов оказывается весьма полезным навыком.
В этой статье разберем суть синаптических весов на простом наглядном примере.
Прежде всего, освежим термины. Что есть нейронная сеть, синапсы и веса.
Термином «искусственная нейронная сеть» или просто «нейронная сеть» часто обозначают математическую модель, очень упрощенно описывающую общий алгоритм работы человеческой нервной системы.
Нервную систему человека можно рассматривать как трехступенчатую.
Центром нервной системы является мозг, представленный сетью нейронов. Специальные рецепторы преобразовывают сигналы от тела и из окружающей среды в электрические импульсы и передают ее в мозг. Мозг получает информацию от рецепторов в виде электрических импульсов, анализирует ее и выдает соответствующие решения эффекторам также в виде электрических импульсов. Эффекторы преобразовывают электрические импульсы, сгенерированные мозгом, в выходные сигналы.
Синапсы – места соединения аксона одного нейрона с телом или отростком (дендритом или аксоном) другого нейрона. Через синапсы сигналы передаются от нейрона к нейрону.
У каждого синапса есть свой «вес», то есть как бы своя «важность», придаваемая значению сигнала, проходящего через данный синапс.
Получаем модель нейрона из трех элементов:
Совокупность синапсов, каждый из которых характеризуется своим весом.
Сумматор, складывающий входные сигналы, взвешенные относительно соответствующих синапсов нейрона. Математически, это просто сумма значений входных сигналов, умноженных на их вес («важность»).
В простом варианте дендриты и аксоны группируются в последовательные слои. Выходные сигналы одного слоя поступают на рецепторы следующего слоя и так далее. Такие сети отличаются между собой размерами и количествами слоев. Математика при этом не меняется.
Что все эти линии, кружочки и взвешенные суммы означают на практике?
Предположим, нужно определить, является ли объект автомобилем. Подходим, начинаем осматривать, заполняем чек-лист. Крыша есть – ставим галочку, добавляем баллы. Стекла есть, двери есть, щетки-дворники есть, четыре колеса есть – все это плюс баллы. При достижении заданного количества баллов считаем, что перед нами автомобиль. А вот если есть пропеллер, то это уже не автомобиль. Это может быть самолет, вертолет, какая-то специальная лодка, но не автомобиль. То есть важность наличия пропеллера такова, что сразу перечеркивает все «автомобильные» баллы до этого. В этом случае наличию пропеллера мы придадим большой «отрицательный» вес. Теперь посмотрим на крышу. Есть автомобили и без крыши. То есть наличие крыши не так важно для определения, что перед нами автомобиль, как, например, наличие колес. Наличие крыши скажет нам, что перед нами скорее автомобиль, чем котик или кружка, но не скажет точно, это автомобиль или нет. «Вес» наличия крыши будет меньше «веса» наличия колес. А если мы будем сравнивать автомобиль и телегу, то по наличию четырех колес можно и перепутать. Хорошо, что наличие мотора исправит ситуацию. Когда мы сложим все баллы, показывающие важность наличия данного пункта, мы определим, что баллов «автомобиль» больше, чем баллов «телега» или баллов «самолет». Вот так и определяется важность какого-либо параметра. Аналогично, для определения, что это котик важно наличие ушек, глаз, лап, усов, хвоста и так далее.
Суть синаптических весов от этого не меняется. В сети в 200 слоев и в сети в 1 слой – суть остается той же. Поэтому рассмотрим простой наглядный пример.
Рассмотрим обычный 13-ти сегментный цифровой индикатор.
Задача – определить цифру по горящим сегментам.
Каждый сегмент будем считать рецептором.
Если сегмент горит, то его значение равно 1, если не горит, то 0.
Теперь, говоря научным языком, приступим к обучению нейронной сети, то есть подбору коэффициентов. Собственно говоря, все обучение и сводится к подбору коэффициентов различными способами.
Составим таблицу где сторонами будут номер сегмента 1-13 и цифра 1-9.
В нашем примере нужно заполнить таблицу коэффициентами таким образом, чтобы при построчном суммировании перемножений коэффициентов и значений сегментов (1 – горит, 0 – не горит) максимальная сумма была бы в строке, соответствующей горящей цифре.
Другими словами, будем умножать коэффициенты на значения соответствующих сегментов и складывать получаемые значения построчно. В какой строке сумма максимальна, та цифра и горит.
Зададим первоначальные веса.
Когда горят все сегменты, то максимальная сумма равна 13 и соответствует цифре «8».
Отключим сегмент 13. Это соответствует цифре «0».
Видим, что максимальная сумма равна 12, но одновременно в двух строках – цифры «8» и «0». Нужно скорректировать коэффициенты таким образом, чтобы сумма 12 горящих сегментов цифры «0» превышала бы сумму 13 горящих сегментов цифры «8». В нашем случае коэффициент должен быть просто больше 13/12, например, 1.1.
Теперь видим, что если горят сегменты цифры «0», то сумма в строке цифры «0» максимальна.
Таким образом получаем конечную совокупность весов.
При зажигании различных сегментов горящая цифра будет определяться по максимальной сумме.
В данном примере веса получались путем рассуждений и ручных расчетов. Конечно, сейчас обучение нейронных сетей осуществляется автоматически, с использованием различных методов компьютерного программирования и моделирования. Компьютерная программа по заданному алгоритму перебирает и подбирает соответствующие коэффициенты, корректирует размеры и количество слоев, уменьшает процент ошибок, увеличивает точность и так далее, о чем будет рассказано в следующих статьях. В данной статье мы лишь затронули понятие и суть синаптических весов на очень простом наглядном примере.
Что такое нейронные сети и как они работают? Классификация искусственных нейросетей
Нейронная сеть – одно из направлений искусственного интеллекта, цель которого смоделировать аналитические механизмы, осуществляемые человеческим мозгом. Задачи, которые решает типичная нейросеть – классификация, предсказание и распознавание. Нейросети способны самостоятельно обучаться и развиваться, строя свой опыт на совершенных ошибках.
Нейросети — это последовательность нейронов, соединенных между собой синапсами. Структура нейронной сети пришла в мир программирования прямиком из биологии. Благодаря такой структуре, машина обретает способность анализировать и даже запоминать различную информацию. Также нейронные сети способны не только анализировать входящую информацию, но и воспроизводить ее из своей памяти.
Другими словами, нейросеть это машинная интерпретация мозга человека, в котором находятся миллионы нейронов передающих информацию в виде электрических импульсов.
Навигация по материалу:
История создания нейронных сетей
Какова же история развития нейронных сетей в науке и технике? Она берет свое начало с появлением первых компьютеров или ЭВМ (электронно-вычислительная машина) как их называли в те времена. Так еще в конце 1940-х годов некто Дональд Хебб разработал механизм нейронной сети, чем заложил правила обучения ЭВМ, этих «протокомпьютеров».
Дальнейшая хронология событий была следующей :
GeekUniversity совместно с Mail.ru Group открыли первый в России факультет Искусственного интеллекта преподающий нейронные сети. Для учебы достаточно школьных знаний. Программа включает в себя все необходимые ресурсы и инструменты + целая программа по высшей математике. Не абстрактная, как в обычных вузах, а построенная на практике. Обучение познакомит вас с технологиями машинного обучения и нейронными сетями, научит решать настоящие бизнес-задачи.
Как работают нейронные сети?
Искусственная нейронная сеть — совокупность нейронов, взаимодействующих друг с другом. Они способны принимать, обрабатывать и создавать данные. Это настолько же сложно представить, как и работу человеческого мозга. Нейронная сеть в нашем мозгу работает для того, чтобы вы сейчас могли это прочитать: наши нейроны распознают буквы и складывают их в слова.
Нейронная сеть включает в себя несколько слоёв нейронов, каждый из которых отвечает за распознавание конкретного критерия: формы, цвета, размера, текстуры, звука, громкости и т.д.
Год от года в результате миллионов экспериментов и тонн вычислений к простейшей сети добавлялись новые и новые слои нейронов. Они работают по очереди. Например, первый определяет, квадрат или не квадрат, второй понимает, квадрат красный или нет, третий вычисляет размер квадрата и так далее. Не квадраты, не красные и неподходящего размера фигуры попадают в новые группы нейронов и исследуются уже ими.
Для чего нужны нейросети?
Нейронные сети используются для решения сложных задач, которые требуют аналитических вычислений подобных тем, что делает человеческий мозг. Самыми распространенными применениями нейронных сетей является:
Область применения искусственных нейронных сетей с каждым годом все более расширяется, на сегодняшний день они используются в таких сферах как:
Теперь, чтобы понять, как же работают нейронные сети, давайте взглянем на ее составляющие и их параметры.
Что такое нейрон?
Нейрон — это вычислительная единица, которая получает информацию, производит над ней простые вычисления и передает ее дальше. Они делятся на три основных типа: входной (синий), скрытый (красный) и выходной (зеленый):
Также есть нейрон смещения и контекстный нейрон. В том случае, когда нейросеть состоит из большого количества нейронов, вводят термин слоя. Соответственно, есть входной слой, который получает информацию, n скрытых слоев (обычно их не больше 3), которые ее обрабатывают и выходной слой, который выводит результат.
У каждого из нейронов есть 2 основных параметра:
В случае входного нейрона: input=output. В остальных, в поле input попадает суммарная информация всех нейронов с предыдущего слоя, после чего, она нормализуется, с помощью функции активации (пока что просто представим ее f(x)) и попадает в поле output.
Важно помнить, что нейроны оперируют числами в диапазоне [0,1] или [-1,1]. А как же, вы спросите, тогда обрабатывать числа, которые выходят из данного диапазона? На данном этапе, самый простой ответ — это разделить 1 на это число. Этот процесс называется нормализацией, и он очень часто используется в нейронных сетях. Подробнее об этом чуть позже.
Что такое синапс?
Синапс это связь между двумя нейронами. У синапсов есть 1 параметр — вес. Благодаря ему, входная информация изменяется, когда передается от одного нейрона к другому. Допустим, есть 3 нейрона, которые передают информацию следующему. Тогда у нас есть 3 веса, соответствующие каждому из этих нейронов. У того нейрона, у которого вес будет больше, та информация и будет доминирующей в следующем нейроне (пример — смешение цветов).
На самом деле, совокупность весов нейронной сети или матрица весов — это своеобразный мозг всей системы. Именно благодаря этим весам, входная информация обрабатывается и превращается в результат.
Важно помнить, что во время инициализации нейронной сети, веса расставляются в случайном порядке.
Биологическая основа нейросвязей
В нашем мозге есть нейроны. Их около 86 миллиардов. Нейрон это клетка, соединенная с другими такими клетками. Клетки соединены друг с другом отростками. Всё это вместе напоминает своего рода сеть. Вот вам и нейронная сеть. Каждая клетка получает сигналы от других клеток. Далее обрабатывает их и сама отправляет сигнал другим клеткам.
Проще говоря нейрон получает сигнал (информацию), обрабатывает его (что то там решает, думает) и отправляет свой ответ дальше. Стрелки изображают связи-отростки по которым передается информация:
Вот так передавая друг другу сигналы, нейронная сеть приходит к какому либо решению. А мы то думали, что мы единолично все решаем! Нет, наше решение — это результат коллективной работы миллиарда нейронов.
На моей картинке стрелки обозначают связи нейронов. Связи бывают разные. Например стрелка внизу между нейроном 2 и 5 длинная. И значит сигнал от нейрона 2 до нейрона 5 будет дольше идти, чем например сигнал от нейрона 3 где стрелка вдвое короче. Да и вообще сигнал может затухнуть и прийти слабым. В биологии много всего интересного.
Но рассматривать всё это — как там думает нейрон, затухнет ли сигнал, когда он придет или не придет в IT не стали. А что голову морочить? И просто построили упрощенную модель.
В этой модели можно выделить две основные составляющие :
Итого: есть алгоритм и есть вес решения. Это всё что нужно для построения простейшей нейросети.
Искусственная нейронная сеть
Нейронная сеть — попытка с помощью математических моделей воспроизвести работу человеческого мозга для создания машин, обладающих искусственным интеллектом.
Искусственная нейронная сеть обычно обучается с учителем. Это означает наличие обучающего набора (датасета), который содержит примеры с истинными значениями: тегами, классами, показателями.
Например, если вы хотите создать нейросеть для оценки тональности текста, датасетом будет список предложений с соответствующими каждому эмоциональными оценками. Тональность текста определяют признаки (слова, фразы, структура предложения), которые придают негативную или позитивную окраску. Веса признаков в итоговой оценке тональности текста (позитивный, негативный, нейтральный) зависят от математической функции, которая вычисляется во время обучения нейронной сети.
Раньше люди генерировали признаки вручную. Чем больше признаков и точнее подобраны веса, тем точнее ответ. Нейронная сеть автоматизировала этот процесс:
Искусственная нейронная сеть состоит из трех компонентов :
Обучение таких нейросетей происходит в два этапа :
Во время прямого распространения ошибки делается предсказание ответа. При обратном распространении ошибка между фактическим ответом и предсказанным минимизируется.
Для более глубокого изучения советуем к просмотру 2 видео из TED Talks: Видео 1, Видео 2 (видео-ролики на английском языке).
Виды и классификация нейронных сетей
За период развития, нейронные сети поделились на множество типов, которые переплетаются между собой в различных задачах. На данный момент сложно классифицировать какую-либо сеть только по одному признаку. Это можно сделать по принципу применения, типу входной информации, характеру обучения, характеру связей, сфере применения.
Обучение с учителем (+) или без(-) или смешанное (с)
Распознание образов, принятие решений, прогнозирование, аппроксимация, анализ данных
Практически любая сфера применения, кроме оптимизации информации
Сжатие данных и ассоциативная память
Строение компьютерных систем
Кластеризация, сжатие данных, анализ данных, оптимизация
Финансы, базы данных
Радиально-базисных функций (RBF-сеть)
Принятие решений и управление, аппроксимация, прогнозирование
Управленческие структуры, нейроуправление
Обработка графических данных
Принятие решение, распознавание образов, анализ данных
Протезирование, робототехника, телекоммуникации, компьютерное зрение
Про то, что такое обучение с учителем, написано в следующем разделе. Каждая сеть имеет свои характеристики, которые можно применять в том или ином случае. Рассмотрим более подробно два типа сетей, которые для множества производных типов нейросетей являются практически первоисточниками.
Сверточные
Один из популярнейших типов сети, часто используемый для распознавания той или иной информации в фотографиях и видео, обработке языка, системах для рекомендаций.
Идея сложной системы этого типа нейросети возникла при тщательном изучении зрительной коры, которая в больших полушариях мозга отвечает за обработку визуальной составляющей. Основной критерий выбора в пользу сверточного типа – она в составе технологий глубокого обучения. Схожий тип с перцептроном, но разница в том, что здесь используется ограниченная матрица весов, сдвигаемая по обрабатываемому слою, вместо полносвязной нейронной сети.
Рекуррентные
Этот тип нейросети, в котором связи между элементами могут обрабатывать серии различных событий во времени или работать с последовательными цепочками в пространстве. Такой тип часто применяют там, где что-то целое разбито на куски. Например, распознавание речи или рукописного текста. От нее пошло множество видов сетей, в том числе Хопфилда, Элмана и Джордана.
Обучение нейронной сети
Один из главных и самый важный критерий – возможность обучения нейросети. В целом, нейросеть – это совокупность нейронов, через которые проходит сигнал. Если подать его на вход, то пройдя через тысячи нейронов, на выходе получится неизвестно что. Для преобразования нужно менять параметры сети, чтобы на выходе получились нужные результаты.
Входной сигнал изменить нельзя, сумматор выполняет функцию суммирования и изменить что-то в нем или вывести из системы не выйдет, так как это перестанет быть нейросетью. Остается одно – использовать коэффициенты или коррелирующие функции и применять их на веса связей. В этом случае можно дать определение обучения нейронной сети – это поиск набора весовых коэффициентов, которые при прохождении через сумматор позволят получить на выходе нужный сигнал.
Такую концепцию применяет и наш мозг. Вместо весов в нем используются синопсы, позволяющие усиливать или делать затухание входного сигнала. Человек обучается, благодаря изменению синапсов при прохождении электрохимического импульса в нейросети головного мозга.
Но есть один нюанс. Если же задать вручную коэффициенты весов, то нейросеть запомнит правильный выходной сигнал. При этом вывод информации будет мгновенным и может показаться, что нейросеть смогла быстро обучиться. И стоит немного изменить входной сигнал, как на выходе появятся неправильные, не логические ответы.
Поэтому, вместо указания конкретных коэффициентов для одного входного сигнала, можно создать обобщающие параметры с помощью выборки.
С помощью такой выборки можно обучать сеть, чтобы она выдавала корректные результаты. В этом моменте, можно поделить обучение нейросети на обучение с учителем и без учителя.
Обучение с учителем
Обучение таким способом подразумевает концепцию: даете выборку входных сигналов нейросети, получаете выходные и сравниваете с готовым решением.
Как готовить такие выборки :
Учителем не обязательно выступает человек. Сеть нужно тренировать сотнями и тысячами часов, поэтому в 99% случаев тренировкой занимается компьютерная программа.
Обучение без учителя
Концепция состоит в том, что делается выборка входных сигналов, но правильных ответов на выходе вы знать не можете.
Как происходит обучение? В теории и на практике, нейросеть начинает кластеризацию, то есть определяет классы подаваемых входных сигналов. Затем, она выдает сигналы различных типов, отвечающие за входные объекты.
Сверточная нейронная сеть
Свёрточная нейронная сеть (СНС, CNN) — специальная архитектура искусственных нейронных сетей, предложенная Яном Лекуном и нацеленная на эффективное распознавание образов. Данной архитектуре удаётся гораздо точнее распознавать объекты на изображениях, так как, в отличие от многослойного персептрона, учитывается двухмерная топология изображения. При этом свёрточные сети устойчивы к небольшим смещениям, изменениям масштаба и поворотам объектов на входных изображениях. Во многом, именно поэтому архитектуры, основанные на свёрточных сетях, до сих пор занимают первые места в соревнованиях по распознаванию образов, как, например, ImageNet.
Сверточная нейронная сеть является основным инструментом для классификации и распознавания объектов, лиц на фотографиях, распознавания речи. Есть множество вариантов применения CNN, такие как Deep Convolutional Neural Network (DCNN), Region-CNN (R-CNN), Fully Convolutional Neural Networks (FCNN), Mask R-CNN и другие.
CNN на сегодня – “рабочая лошадка” в области нейронных сетей. Используется преимущественно для решения задач компьютерного зрения, хотя может применяться также для работы с аудио и любыми данными, которые можно представить в виде матриц.
Особенности работы свёрточных сетей
Нам известно, что нейронные сети хороши в распознавании изображений. Причём хорошая точность достигается и обычными сетями прямого распространения, однако, когда речь заходит про обработку изображений с большим числом пикселей, то число параметров для нейронной сети многократно увеличивается. Причём настолько, что время, затрачиваемое на их обучение, становится невообразимо большим.
Так, если требуется работать с цветными изображениями размером 64х64, то для каждого нейрона первого слоя полносвязной сети потребуется 64·64·3 = 12288 параметров, а если сеть должна распознавать изображения 1000х1000, то входных параметров будет уже 3 млн! А помимо входного слоя есть и другие слои, на которых, зачастую, число нейронов превышает количество нейронов на входном слое, из-за чего 3 млн запросто превращаются в триллионы! Такое количество параметров просто невозможно рассчитать быстро ввиду недостаточно больших вычислительных мощностей компьютеров.
Главной особенностью свёрточных сетей является то, что они работают именно с изображениями, а потому можно выделить особенности, свойственные именно им. Многослойные персептроны работают с векторами, а потому для них нет никакой разницы, находятся ли какие-то точки рядом или на противоположных концах, так как все точки равнозначны и считаются совершенно одинаковым образом. Изображения же обладают локальной связностью. Например, если речь идёт об изображениях человеческих лиц, то вполне логично ожидать, что точки основных частей лица будут рядом, а не разрозненно располагаться на изображении. Поэтому требовалось найти более эффективные алгоритмы для работы с изображениями и ими оказались свёрточные сети.
В отличие от сетей прямого распространения, которые работают с данными в виде векторов, свёрточные сети работают с изображениями в виде тензоров. Тензоры — это 3D массивы чисел, или, проще говоря, массивы матриц чисел.
Изображения в компьютере представляются в виде пикселей, а каждый пиксель – это значения интенсивности соответствующих каналов. При этом интенсивность каждого из каналов описывается целым числом от 0 до 255.
Чаще всего используются цветные изображения, которые состоят из RGB пикселей – пикселей, содержащих яркости по трём каналам: красному, зелёному и синему. Различные комбинации этих цветов позволяют создать любой из цветов всего спектра. Именно поэтому вполне логично использовать именно тензоры для представления изображений: каждая матрица тензора отвечает за интенсивность своего канала, а совокупность всех матриц описывает всё изображение.
Из чего состоят свёрточные сети?
Свёрточные нейронные сети состоят из базовых блоков, благодаря чему их можно собирать как конструктор, добавляя слой за слоем и получая всё более мощные архитектуры. Основными блоками свёрточных нейронных сетей являются свёрточные слои, слои подвыборки (пулинга), слои активации и полносвязные слои.
Так, например, LeNet5 – одна из первых свёрточных сетей, которая победила в ImageNet, состояла из 7 слоёв: слой свёртки, слой пулинга, ещё один слой свёртки ещё один слой пулинга и трёхслойная полносвязная нейронная сеть.
Сверточный слой
Сверточный слой нейронной сети представляет из себя применение операции свертки к выходам с предыдущего слоя, где веса ядра свертки являются обучаемыми параметрами. Еще один обучаемый вес используется в качестве константного сдвига (англ. bias). При этом есть несколько важных деталей:
Пулинговый слой
Пулинговый слой призван снижать размерность изображения. Исходное изображение делится на блоки размером w×hw×h и для каждого блока вычисляется некоторая функция. Чаще всего используется функция максимума (англ. max pooling) или (взвешенного) среднего (англ. (weighted) average pooling). Обучаемых параметров у этого слоя нет.
Основные цели пулингового слоя :
Inception module
Inception module — это специальный слой нейронной сети, который был предложен в работе[2], в которой была представлена сеть GoogLeNet. Основная цель этого модуля заключается в следующем. Авторы предположили, что каждый элемент предыдущего слоя соответствует определенной области исходного изображения. Каждая свертка по таким элементам будет увеличивать область исходного изображения, пока элементы на последних слоях не будут соответствовать всему изображению целиком. Однако, если с какого-то момента все свертки станут размером 1×11×1, то не найдется элементов, которые покрывали бы все исходное изображение, поэтому было бы невозможно находить большие признаки на изображении.
Чтобы решить эту проблему, авторы предложили так называемый inception module — конкатенацию выходов для сверток размера 1×11×1, 3×33×3, 5×55×5, а также операции max pooling’а с ядром 3×33×3.
К сожалению, подобный наивный подход (англ. naive inception module) приводит к резкому увеличению слоев изображения, что не позволяет построить с его использованием глубокую нейронную сеть. Для этого авторы предложили использовать модифицированный inception module с дополнительным уменьшением размерности — дополнительно к каждому фильтру они добавили слой свертки 1×11×1, который схлопывает все слои изображения в один. Это позволяет сохранить малое число слоев, с сохранением полезной информации о изображении.
Residual block
Двумя серьезными проблемами в обучении глубоких нейронных сетей являются исчезающий градиент (англ. vanishing gradient) и взрывающийся градиент (англ. exploding gradient). Они возникают из-за того, что при дифференцировании по цепному правилу, до глубоких слоев нейронной сети доходит очень маленькая величина градиента (из-за многократного домножения на небольшие величины на предыдущих слоях). Для борьбы с этой проблемой был предложен так называемый residual block.
Идея заключается в том, чтобы взять пару слоёв (например, сверточных), и добавить дополнительную связь, которая проходит мимо этих слоёв. Пусть z(k) — выход k-ого слоя до применения функции активации, а a(k) — выход после. Тогда residual block будет выполнять следующее преобразование: a(k+2)=g(z(k+2)+a(k)), где g — функция активации.
На самом деле, такая нейронная сеть обучается предсказывать функцию F(x)−x, вместо функции F(x), которую изначально нужно было предсказывать. Для компенсации этой разницы и вводится это замыкающее соединение (англ. shortcut connection), которое добавляет недостающий x к функции.
Предположение авторов, которые предложили residual block, заключалось в том, что такую разностную функцию будет проще обучать, чем исходную. Если рассматривать крайние случаи, то если F(x)=x, такую сеть обучить нулю всегда возможно, в отличие от обучения множества нелинейных слоёв линейному преобразованию.
Где можно получить образование по нейронным сетям?
GeekUniversity совместно с Mail.ru Group открыли первый в России факультет Искусственного интеллекта преподающий нейронные сети.
Для учебы достаточно школьных знаний. У вас будут все необходимые ресурсы и инструменты + целая программа по высшей математике. Не абстрактная, как в обычных вузах, а построенная на практике. Обучение познакомит вас с технологиями машинного обучения и нейронными сетями, научит решать настоящие бизнес-задачи.
После учебы вы сможете работать по специальностям:
Особенности обучения в GeekUniversity
Через полтора года практического обучения вы освоите современные технологии Data Science и приобретете компетенции, необходимые для работы в крупной IT-компании. Получите диплом о профессиональной переподготовке и сертификат.
Обучение проводится на основании государственной лицензии № 040485. По результатам успешного завершения обучения выдаем выпускникам диплом о профессиональной переподготовке и электронный сертификат на портале GeekBrains и Mail.ru Group.
Проектно-ориентированное обучение
Обучение происходит на практике, программы разрабатываются совместно со специалистами из компаний-лидеров рынка. Вы решите четыре проектные задачи по работе с данными и примените полученные навыки на практике. Полтора года обучения в GeekUniversity = полтора года реального опыта работы с большими данными для вашего резюме.
Наставник
В течение всего обучения у вас будет личный помощник-куратор. С ним вы сможете быстро разобраться со всеми проблемами, на которые в ином случае ушли бы недели. Работа с наставником удваивает скорость и качество обучения.
Основательная математическая подготовка
Профессионализм в Data Science — это на 50% умение строить математические модели и еще на 50% — работать с данными. GeekUniversity прокачает ваши знания в матанализе, которые обязательно проверят на собеседовании в любой серьезной компании.
GeekUniversity дает полтора года опыта работы для вашего резюме
В результате для вас откроется в 5 раз больше вакансий:
Для тех у кого нет опыта в программировании, предлагается начать с подготовительных курсов. Они позволят получить базовые знания для комфортного обучения по основной программе.