Как работают нейросети: обучение, функции активации и потери
Нейронные сети для начинающих. Часть 1 / Хабр
Привет всем читателям Habrahabr, в этой статье я хочу поделиться с Вами моим опытом в изучении нейронных сетей и, как следствие, их реализации, с помощью языка программирования Java, на платформе Android. Мое знакомство с нейронными сетями произошло, когда вышло приложение Prisma. Оно обрабатывает любую фотографию, с помощью нейронных сетей, и воспроизводит ее с нуля, используя выбранный стиль. Заинтересовавшись этим, я бросился искать статьи и «туториалы», в первую очередь, на Хабре. И к моему великому удивлению, я не нашел ни одну статью, которая четко и поэтапно расписывала алгоритм работы нейронных сетей. Информация была разрознена и в ней отсутствовали ключевые моменты. Также, большинство авторов бросается показывать код на том или ином языке программирования, не прибегая к детальным объяснениям.
Поэтому сейчас, когда я достаточно хорошо освоил нейронные сети и нашел огромное количество информации с разных иностранных порталов, я хотел бы поделиться этим с людьми в серии публикаций, где я соберу всю информацию, которая потребуется вам, если вы только начинаете знакомство с нейронными сетями. В этой статье, я не буду делать сильный акцент на Java и буду объяснять все на примерах, чтобы вы сами смогли перенести это на любой, нужный вам язык программирования. В последующих статьях, я расскажу о своем приложении, написанном под андроид, которое предсказывает движение акций или валюты. Иными словами, всех желающих окунуться в мир нейронных сетей и жаждущих простого и доступного изложения информации или просто тех, кто что-то не понял и хочет подтянуть, добро пожаловать под кат.
Первым и самым важным моим открытием был плейлист американского программиста Джеффа Хитона, в котором он подробно и наглядно разбирает принципы работы нейронных сетей и их классификации. После просмотра этого плейлиста, я решил создать свою нейронную сеть, начав с самого простого примера. Вам наверняка известно, что когда ты только начинаешь учить новый язык, первой твоей программой будет Hello World. Это своего рода традиция. В мире машинного обучения тоже есть свой Hello world и это нейросеть решающая проблему исключающего или(XOR). Таблица исключающего или выглядит следующим образом:
a | b | c |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Соответственно, нейронная сеть берет на вход два числа и должна на выходе дать другое число — ответ. Теперь о самих нейронных сетях.
Что такое нейронная сеть?
Нейронная сеть — это последовательность нейронов, соединенных между собой синапсами. Структура нейронной сети пришла в мир программирования прямиком из биологии. Благодаря такой структуре, машина обретает способность анализировать и даже запоминать различную информацию. Нейронные сети также способны не только анализировать входящую информацию, но и воспроизводить ее из своей памяти. Заинтересовавшимся обязательно к просмотру 2 видео из TED Talks: Видео 1, Видео 2). Другими словами, нейросеть это машинная интерпретация мозга человека, в котором находятся миллионы нейронов передающих информацию в виде электрических импульсов.
Какие бывают нейронные сети?
Пока что мы будем рассматривать примеры на самом базовом типе нейронных сетей — это сеть прямого распространения (далее СПР). Также в последующих статьях я введу больше понятий и расскажу вам о рекуррентных нейронных сетях. СПР как вытекает из названия это сеть с последовательным соединением нейронных слоев, в ней информация всегда идет только в одном направлении.
Для чего нужны нейронные сети?
Нейронные сети используются для решения сложных задач, которые требуют аналитических вычислений подобных тем, что делает человеческий мозг. Самыми распространенными применениями нейронных сетей является:
Классификация — распределение данных по параметрам. Например, на вход дается набор людей и нужно решить, кому из них давать кредит, а кому нет. Эту работу может сделать нейронная сеть, анализируя такую информацию как: возраст, платежеспособность, кредитная история и тд.
Предсказание — возможность предсказывать следующий шаг. Например, рост или падение акций, основываясь на ситуации на фондовом рынке.
Распознавание — в настоящее время, самое широкое применение нейронных сетей. Используется в Google, когда вы ищете фото или в камерах телефонов, когда оно определяет положение вашего лица и выделяет его и многое другое.
Теперь, чтобы понять, как же работают нейронные сети, давайте взглянем на ее составляющие и их параметры.
Что такое нейрон?
Нейрон — это вычислительная единица, которая получает информацию, производит над ней простые вычисления и передает ее дальше. Они делятся на три основных типа: входной (синий), скрытый (красный) и выходной (зеленый). Также есть нейрон смещения и контекстный нейрон о которых мы поговорим в следующей статье. В том случае, когда нейросеть состоит из большого количества нейронов, вводят термин слоя. Соответственно, есть входной слой, который получает информацию, n скрытых слоев (обычно их не больше 3), которые ее обрабатывают и выходной слой, который выводит результат. У каждого из нейронов есть 2 основных параметра: входные данные (input data) и выходные данные (output data). В случае входного нейрона: input=output. В остальных, в поле input попадает суммарная информация всех нейронов с предыдущего слоя, после чего, она нормализуется, с помощью функции активации (пока что просто представим ее f(x)) и попадает в поле output.
Важно помнить, что нейроны оперируют числами в диапазоне [0,1] или [-1,1]. А как же, вы спросите, тогда обрабатывать числа, которые выходят из данного диапазона? На данном этапе, самый простой ответ — это разделить 1 на это число. Этот процесс называется нормализацией, и он очень часто используется в нейронных сетях. Подробнее об этом чуть позже.
Что такое синапс?
Синапс это связь между двумя нейронами. У синапсов есть 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]. Использовать эту функцию только с положительными значениями нецелесообразно так как это значительно ухудшит результаты вашей нейросети.
Тренировочный сет
Тренировочный сет — это последовательность данных, которыми оперирует нейронная сеть. В нашем случае исключающего или (xor) у нас всего 4 разных исхода то есть у нас будет 4 тренировочных сета: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.
Итерация
Это своеобразный счетчик, который увеличивается каждый раз, когда нейронная сеть проходит один тренировочный сет. Другими словами, это общее количество тренировочных сетов пройденных нейронной сетью.
Эпоха
При инициализации нейронной сети эта величина устанавливается в 0 и имеет потолок, задаваемый вручную. Чем больше эпоха, тем лучше натренирована сеть и соответственно, ее результат. Эпоха увеличивается каждый раз, когда мы проходим весь набор тренировочных сетов, в нашем случае, 4 сетов или 4 итераций.
Важно не путать итерацию с эпохой и понимать последовательность их инкремента. Сначала n
раз увеличивается итерация, а потом уже эпоха и никак не наоборот. Другими словами, нельзя сначала тренировать нейросеть только на одном сете, потом на другом и тд. Нужно тренировать каждый сет один раз за эпоху. Так, вы сможете избежать ошибок в вычислениях.
Ошибка
Ошибка — это процентная величина, отражающая расхождение между ожидаемым и полученным ответами. Ошибка формируется каждую эпоху и должна идти на спад. Если этого не происходит, значит, вы что-то делаете не так. Ошибку можно вычислить разными путями, но мы рассмотрим лишь три основных способа: Mean Squared Error (далее MSE), Root MSE и Arctan. Здесь нет какого-либо ограничения на использование, как в функции активации, и вы вольны выбрать любой метод, который будет приносить вам наилучший результат. Стоит лишь учитывать, что каждый метод считает ошибки по разному. У Arctan, ошибка, почти всегда, будет больше, так как он работает по принципу: чем больше разница, тем больше ошибка. У Root MSE будет наименьшая ошибка, поэтому, чаще всего, используют MSE, которая сохраняет баланс в вычислении ошибки.
MSE
Root MSE
Arctan
Принцип подсчета ошибки во всех случаях одинаков. За каждый сет, мы считаем ошибку, отняв от идеального ответа, полученный. Далее, либо возводим в квадрат, либо вычисляем квадратный тангенс из этой разности, после чего полученное число делим на количество сетов.
Задача
Теперь, чтобы проверить себя, подсчитайте результат, данной нейронной сети, используя сигмоид, и ее ошибку, используя MSE. 2)/1=0.45
Результат — 0.33, ошибка — 45%.
Большое спасибо за внимание! Надеюсь, что данная статья смогла помочь вам в изучении нейронных сетей. В следующей статье, я расскажу о нейронах смещения и о том, как тренировать нейронную сеть, используя метод обратного распространения и градиентного спуска.
Использованные ресурсы:
— Раз
— Два
— Три
Как работают нейросети? Разбор | Droider.ru
Нейросети, машинное обучение, искусственный интеллект. Звучит круто, но как это всё работает?
Объясню на простом примере. Представьте школьника, который пыхтит над контрольной по математике. И вот он подобрался к последнему уравнению, где нужно было вычислить несколько неизвестных (a, b и c) и посчитать ответ.
(a+b)*c=?
Он решает задачу и вдруг краем глаза замечает, что правильный ответ 10, а у него вообще не то — 120 тысяч. Что делать? По-хорошему, надо бы заново всё считать. Но времени мало. Поэтому он решает просто подогнать значения в уравнении, чтобы получился правильный ответ.
Он это делает и понимает, что значения a, b и с он посчитал неправильно еще в предыдущем уравнении. Поэтому там тоже надо всё быстро поправить. Он это делает и сдаёт работу.
Естественно, учительница палит, что он просто подогнал решение под правильный ответ и ставит ему двойку. И зря! Потому что, жульничество школьника на контрольной, можно считать прообразом метода машинного обучения, который позволил нейросетям совершить революцию в развитии компьютерного зрения, распознавания речи и искусственного интеллекта в целом. На разработку этого метода ушло целых 25 лет! И называется он алгоритмом обратного распространения ошибки.
Да-да, машинное обучение — это фактически подгонка уравнения под правильный ответ. Но давайте немного углубимся и поймем как это всё работает на самом деле, на примере простейшей нейросети.
Классические алгоритмы
Допустим, мы хотим научить компьютер распознавать рукописные цифры.
Как решить эту задачу? Отличник бы воспользовался классическими математическими методами.
Он бы написал программу, которая может определять специфические признаки, которые отличают одну цифру от другой. Допустим в 8-ке есть два кружочка, в 7-ке две длинные прямые линии и так далее. Вот только выявлять, что это за признаки и описывать их программе ему бы пришлось вручную. Короче надо было проделать кучу работы, и он бы всё равно обломался.
С такими задачами отлично справляются нейросети, потому как нейросеть может выявлять и находить эти специфические признаки самостоятельно. Как она это делает?
Для примера возьмём нейросеть с классической структурой, под названием многослойный перцептрон.
Структура нейросети
Нейросеть состоит из нейронов, а каждый нейрон — это ячейка, которая хранит в себе какой-то ограниченный диапазон значений. В нашем случае это будут значения от 0 до 1. На вход каждого нейрона поступает множество значений, а на выходе он отдаёт только одно. Наша нейросеть называется многослойной, потому, что нейроны в ней организованы в столбцы, а каждый столбец — это отдельный слой. Как видите тут целых четыре слоя.
Самый первый слой называется — входным. По сути, туда просто поступают входные данные.
Например, если мы хотим распознать картинку с цифрой размером 28 на 28 пикселей нам нужно, чтобы в первом слое нашей сети было 784 нейрона, по количеству пикселей в картинке.
Так как нейросеть может хранить только значения от 0 до 1 закодируем яркость каждого пикселя в этом диапазоне значений.
Следующие два слоя называются скрытыми. Количество нейронов в скрытых слоях может быть каким угодно, это подбирается методом проб и ошибок. Именно эти слои отвечают за выявление специфических признаков.
Значения из входного слоя поступают в скрытые слои, там происходит специфическая математика, значения преобразуются и отправляются в последний слой, который называется выходным.
В том нейроне выходного слоя, в котором окажется самое высокое значение, и высчитывается ответ. Поскольку в нашей нейросети мы распознаем цифры, то в выходном слое у нас 10 нейронов, каждый из которых обозначает ответ от 0 до 9.
Веса и смещения
Структура примерно понятна, но какие данные передаются по слоям и что за специфическая математика там происходит?
Разберем на примере одного из нейронов второго слоя.
В этот нейрон, как и в другие нейроны скрытого слоя, поступает сумма всех значений нейронов входного слоя. Напомню, что задача нейронов второго слоя — находить какие-то признаки. Например, этот нейрон мог бы искать горизонтальную линию в верхней части цифры 7.
Если бы мы действовали в логике классического алгоритма, то мы бы могли присвоить разным областям разные коэффициенты. Например мы предполагаем, что в верхней части изображения должны быть яркие пиксели, например горизонтальная палочка у 7-ки. Для этой области мы можем задать повышенные коэффициенты, а для других областей — пониженные. Такие коэффициенты в нейросетях принято называть весами. В формулах обычно обозначаются буквой w.
Теперь смотрите: перемножая входные значения яркостей на веса мы понимаем, была в этой области палочка или нет. Если признак найден, то в нейрон будет записано большое число, а если признака не было — число будет маленьким.
Но для того, чтобы активировать нейрон, нам нужно подать туда достаточно высокое число, выше какого-то порогового значения. В противном случае, нейрон выпадет из игры и дальше ничего не передаст.
Как это делается?
Мы знаем, что нейрон может содержать значения от 0 до 1. Но входяшие данные могут иметь значение существенно больше: мало того, что мы суммируем все значения из первого слоя, так мы еще их перемножаем на веса. Поэтому полученное значение нам нужно нормировать, например, при помощи функции типа сигмоиды или ReLU.
Но представьте, что на исходных картинках может быть шум, какие-то точки, черточки и прочее. Этот шум нужно как-то отсекать. Для этого в формулу вводится коэффициент смещения, по английски Bias, и он обозначается буквой b. Например, если Bias отрицательный — нейрон будет активироваться реже.
Вся эта функция, кстати называется функцией активации.
Все веса и смещения для каждого нейрона настраиваются отдельно. Но даже в небольшой нейросети типа нашей, весов и смещений более 13 тысяч. Поэтому вручную их настроить не получится. И как же нам задать правильные веса?
Обучение
А никак! Мы просто даем нейросети произвольные значения весов и смещений. И в итоге, естественно, мы получаем совершенно случайные ответы на выходе.
И вот тут мы можем вспомнить, что у нас, как и у двоечника в начале рассказа, есть преимущество. Мы знаем правильные ответы, а значит в каждом конкретном случае. мы можем указать нейросети насколько она ошиблась. И тут в бой вступает тот самый алгоритм обратного распространения ошибки! В чем его суть?
Допустим, мы загрузили в нейросеть цифру 2. если бы нейросеть работала идеально в выходном нейроне отвечающем за распознавание двойки было бы максимальное значение равное единице. А в остальный нейронах были бы нолики. Это значит что нейросеть на 100% уверена, что это двойка, а не что-то иное. Но мы получили другие значения.
Однако, поскольку мы знаем правильный ответ, мы можем вычесть из неправильных ответов правильные и подсчитать насколько нейросеть ошиблась в каждом случае. А дальше зная степень ошибки, мы можем отрегулировать веса и смещения для каждого нейрона пропорционально тому, насколько они способствовали общей ошибке.
Естественно, проделав такую операцию один раз мы не сможем добиться правильных значений на выходе. Но с каждой попыткой общая ошибка будет уменьшаться. И только после сотен тысяч циклов прямого распространения ошибки и обратного, нейросеть сможет сама подобрать оптимальные веса и смещения. Вот и всё! Так и работают нейросети и машинное обучение.
Другие структуры
Мы с вами рассмотрели самый простой пример нейросети. Но существуют масса архитектур нейросетей:
Это целый мир чрезвычайно интересных знаний. И вскоре выйдет еще один материал про терминологию нейросетей и Искусственного Интеллекта.
Post Views:
3 755
Нейросети: что это такое и как работает | Будущее, Наука
За последнюю пару лет искусственный интеллект незаметно отряхнулся от тегов «фантастика» и «геймдизайн» и прочно прописался в ежедневных новостных лентах. Сущности под таинственным названием «нейросети» опознают людей по фотографиям, водят автомобили, играют в покер и совершают научные открытия. При этом из новостей не всегда понятно, что же такое эти загадочные нейросети: сложные программы, особые компьютеры или стойки со стройными рядами серверов?
Конечно, уже из названия можно догадаться, что в нейросетях разработчики попытались скопировать устройство человеческого мозга: как известно, он состоит из множества простых клеток-нейронов, которые обмениваются друг с другом электрическими сигналами. Но чем тогда нейросети отличаются от обычного компьютера, который тоже собран из примитивных электрических деталей? И почему до современного подхода не додумались ещё полвека назад?
Давайте попробуем разобраться, что же кроется за словом «нейросети», откуда они взялись — и правда ли, что компьютеры прямо на наших глазах постепенно обретают разум.
Идея нейросети заключается в том, чтобы собрать сложную структуру из очень простых элементов. Вряд ли можно считать разумным один-единственный участок мозга — а вот люди обычно на удивление неплохо проходят тест на IQ. Тем не менее до сих пор идею создания разума «из ничего» обычно высмеивали: шутке про тысячу обезьян с печатными машинками уже сотня лет, а при желании критику нейросетей можно найти даже у Цицерона, который ехидно предлагал до посинения подбрасывать в воздух жетоны с буквами, чтобы рано или поздно получился осмысленный текст. Однако в XXI веке оказалось, что классики ехидничали зря: именно армия обезьян с жетонами может при должном упорстве захватить мир.
Красота начинается, когда нейронов много
На самом деле нейросеть можно собрать даже из спичечных коробков: это просто набор нехитрых правил, по которым обрабатывается информация. «Искусственным нейроном», или перцептроном, называется не какой-то особый прибор, а всего лишь несколько арифметических действий.
Работает перцептрон проще некуда: он получает несколько исходных чисел, умножает каждое на «ценность» этого числа (о ней чуть ниже), складывает и в зависимости от результата выдаёт 1 или –1. Например, мы фотографируем чистое поле и показываем нашему нейрону какую-нибудь точку на этой картинке — то есть посылаем ему в качестве двух сигналов случайные координаты. А затем спрашиваем: «Дорогой нейрон, здесь небо или земля?» — «Минус один, — отвечает болванчик, безмятежно разглядывая кучевое облако. — Ясно же, что земля».
«Тыкать пальцем в небо» — это и есть основное занятие перцептрона. Никакой точности от него ждать не приходится: с тем же успехом можно подбросить монетку. Магия начинается на следующей стадии, которая называется машинным обучением. Мы ведь знаем правильный ответ — а значит, можем записать его в свою программу. Вот и получается, что за каждую неверную догадку перцептрон в буквальном смысле получает штраф, а за верную — премию: «ценность» входящих сигналов вырастает или уменьшается. После этого программа прогоняется уже по новой формуле. Рано или поздно нейрон неизбежно «поймёт», что земля на фотографии снизу, а небо сверху, — то есть попросту начнёт игнорировать сигнал от того канала, по которому ему передают x-координаты. Если такому умудрённому опытом роботу подсунуть другую фотографию, то линию горизонта он, может, и не найдёт, но верх с низом уже точно не перепутает.
Чтобы нарисовать прямую линию, нейрон исчеркает весь лист
В реальной работе формулы немного сложнее, но принцип остаётся тем же. Перцептрон умеет выполнять только одну задачу: брать числа и раскладывать по двум стопкам. Самое интересное начинается тогда, когда таких элементов несколько, ведь входящие числа могут быть сигналами от других «кирпичиков»! Скажем, один нейрон будет пытаться отличить синие пиксели от зелёных, второй продолжит возиться с координатами, а третий попробует рассудить, у кого из этих двоих результаты ближе к истине. Если же натравить на синие пиксели сразу несколько нейронов и суммировать их результаты, то получится уже целый слой, в котором «лучшие ученики» будут получать дополнительные премии. Таким образом достаточно развесистая сеть может перелопатить целую гору данных и учесть при этом все свои ошибки.
Перцептроны устроены не намного сложнее, чем любые другие элементы компьютера, которые обмениваются единицами и нулями. Неудивительно, что первый прибор, устроенный по принципу нейросети — Mark I Perceptron, — появился уже в 1958 году, всего через десятилетие после первых компьютеров. Как было заведено в ту эпоху, нейроны у этого громоздкого устройства состояли не из строчек кода, а из радиоламп и резисторов. Учёный Фрэнк Розенблатт смог соорудить только два слоя нейросети, а сигналы на «Марк-1» подавались с импровизированного экрана размером в целых 400 точек. Устройство довольно быстро научилось распознавать простые геометрические формы — а значит, рано или поздно подобный компьютер можно было обучить, например, чтению букв.
Розенблатт и его перцептрон
Розенблатт был пламенным энтузиастом своего дела: он прекрасно разбирался в нейрофизиологии и вёл в Корнеллском университете популярнейший курс лекций, на котором подробно объяснял всем желающим, как с помощью техники воспроизводить принципы работы мозга. Учёный надеялся, что уже через несколько лет перцептроны превратятся в полноценных разумных роботов: они смогут ходить, разговаривать, создавать себе подобных и даже колонизировать другие планеты. Энтузиазм Розенблатта вполне можно понять: тогда учёные ещё верили, что для создания ИИ достаточно воспроизвести на компьютере полный набор операций математической логики. Тьюринг уже предложил свой знаменитый тест, Айзек Азимов призывал задуматься о необходимости законов роботехники, а освоение Вселенной казалось делом недалёкого будущего.
Впрочем, были среди пионеров кибернетики и неисправимые скептики, самым грозным из которых оказался бывший однокурсник Розенблатта, Марвин Минский. Этот учёный обладал не менее громкой репутацией: тот же Азимов отзывался о нём с неизменным уважением, а Стэнли Кубрик приглашал в качестве консультанта на съёмки «Космической одиссеи 2001 года». Даже по работе Кубрика видно, что на самом деле Минский ничего не имел против нейросетей: HAL 9000 состоит именно из отдельных логических узлов, которые работают в связке друг с другом. Минский и сам увлекался машинным обучением ещё в 1950-х. Просто Марвин непримиримо относился к научным ошибкам и беспочвенным надеждам: недаром именно в его честь Дуглас Адамс назвал своего андроида-пессимиста.
В отличие от Розенблатта, Минский дожил до триумфа ИИ
Сомнения скептиков того времени Минский подытожил в книге «Перцептрон» (1969), которая надолго отбила у научного сообщества интерес к нейросетям. Минский математически доказал, что у «Марка-1» есть два серьёзных изъяна. Во-первых, сеть всего с двумя слоями почти ничего не умела — а ведь это и так уже был огромный шкаф, пожирающий уйму электричества. Во-вторых, для многослойных сетей алгоритмы Розенблатта не годились: по его формуле часть сведений об ошибках сети могла потеряться, так и не дойдя до нужного слоя.
Минский не собирался сильно критиковать коллегу: он просто честно отметил сильные и слабые стороны его проекта, а сам продолжил заниматься своими разработками. Увы, в 1971 году Розенблатт погиб — исправлять ошибки перцептрона оказалось некому. «Обычные» компьютеры в 1970-х развивались семимильными шагами, поэтому после книги Минского исследователи попросту махнули рукой на искусственные нейроны и занялись более перспективными направлениями.
Развитие нейросетей остановилось на десять с лишним лет — сейчас эти годы называют «зимой искусственного интеллекта». К началу эпохи киберпанка математики наконец-то придумали более подходящие формулы для расчёта ошибок, но научное сообщество поначалу не обратило внимания на эти исследования. Только в 1986 году, когда уже третья подряд группа учёных независимо от других решила обнаруженную Минским проблему обучения многослойных сетей, работа над искусственным интеллектом наконец-то закипела с новой силой.
Хотя правила работы остались прежними, вывеска сменилась: теперь речь шла уже не о «перцептронах», а о «когнитивных вычислениях». Экспериментальных приборов никто уже не строил: теперь все нужные формулы проще было записать в виде несложного кода на обычном компьютере, а потом зациклить программу. Буквально за пару лет нейроны научились собирать в сложные структуры. Например, некоторые слои искали на изображении конкретные геометрические фигуры, а другие суммировали полученные данные. Именно так удалось научить компьютеры читать человеческий почерк. Вскоре стали появляться даже самообучающиеся сети, которые не получали «правильные ответы» от людей, а находили их сами. Нейросети сразу начали использовать и на практике: программу, которая распознавала цифры на чеках, с удовольствием взяли на вооружение американские банки.
1993 год: капча уже морально устарела
К середине 1990-х исследователи сошлись на том, что самое полезное свойство нейросетей — их способность самостоятельно придумывать верные решения. Метод проб и ошибок позволяет программе самой выработать для себя правила поведения. Именно тогда стали входить в моду соревнования самодельных роботов, которых программировали и обучали конструкторы-энтузиасты. А в 1997 году суперкомпьютер Deep Blue потряс любителей шахмат, обыграв чемпиона мира Гарри Каспарова.
Строго говоря, Deep Blue не учился на своих ошибках, а попросту перебирал миллионы комбинаций
Увы, примерно в те же годы нейросети упёрлись в потолок возможностей. Другие области программирования не стояли на месте — вскоре оказалось, что с теми же задачами куда проще справляются обычные продуманные и оптимизированные алгоритмы. Автоматическое распознавание текста сильно упростило жизнь работникам архивов и интернет-пиратам, роботы продолжали умнеть, но разговоры об искусственном интеллекте потихоньку заглохли. Для действительно сложных задач нейросетям по-прежнему не хватало вычислительной мощности.
Вторая «оттепель» ИИ случилась, только когда изменилась сама философия программирования.
В последнее десятилетие программисты — да и простые пользователи — часто жалуются, что никто больше не обращает внимания на оптимизацию. Раньше код сокращали как могли — лишь бы программа работала быстрее и занимала меньше памяти. Теперь даже простейший интернет-сайт норовит подгрести под себя всю память и обвешаться «библиотеками» для красивой анимации.
Конечно, для обычных программ это серьёзная проблема, — но как раз такого изобилия и не хватало нейросетям! Учёным давно известно, что если не экономить ресурсы, самые сложные задачи начинают решаться словно бы сами собой. Ведь именно так действуют все законы природы, от квантовой физики до эволюции: если повторять раз за разом бесчисленные случайные события, отбирая самые стабильные варианты, то из хаоса родится стройная и упорядоченная система. Теперь в руках человечества наконец-то оказался инструмент, который позволяет не ждать изменений миллиарды лет, а обучать сложные системы буквально на ходу.
В последние годы никакой революции в программировании не случилось — просто компьютеры накопили столько вычислительной мощности, что теперь любой ноутбук может взять сотню нейронов и прогнать каждый из них через миллион циклов обучения. Оказалось, что тысяче обезьян с пишущими машинками просто нужен очень терпеливый надсмотрщик, который будет выдавать им бананы за правильно напечатанные буквы, — тогда зверушки не только скопируют «Войну и мир», но и напишут пару новых романов не хуже.
Так и произошло третье пришествие перцептронов — на этот раз уже под знакомыми нам названиями «нейросети» и «глубинное обучение». Неудивительно, что новостями об успехах ИИ чаще всего делятся такие крупные корпорации как Google и IBM. Их главный ресурс — огромные дата-центры, где на мощных серверах можно тренировать многослойные нейросети. Эпоха машинного обучения по-настоящему началась именно сейчас, потому что в интернете и соцсетях наконец-то накопились те самые big data, то есть гигантские массивы информации, которые и скармливают нейросетям для обучения.
В итоге современные сети занимаются теми трудоёмкими задачами, на которые людям попросту не хватило бы жизни. Например, для поиска новых лекарств учёным до сих пор приходилось долго высчитывать, какие химические соединения стоит протестировать. А сейчас существует нейросеть, которая попросту перебирает все возможные комбинации веществ и предлагает наиболее перспективные направления исследований. Компьютер IBM Watson успешно помогает врачам в диагностике: обучившись на историях болезней, он легко находит в данных новых пациентов неочевидные закономерности.
Люди классифицируют информацию с помощью таблиц, но нейросетям незачем ограничивать себя двумя измерениями — поэтому массивы данных выглядят примерно так
В сфере развлечений компьютеры продвинулись не хуже, чем в науке. За счёт машинного обучения им наконец поддались игры, алгоритмы выигрыша для которых придумать ещё сложнее, чем для шахмат. Недавно нейросеть AlphaGo разгромила одного из лучших в мире игроков в го, а программа Libratus победила в профессиональном турнире по покеру. Более того, ИИ уже постепенно пробирается и в кино: например, создатели сериала «Карточный домик» использовали big data при кастинге, чтобы подобрать максимально популярный актёрский состав.
Как и полвека назад, самым перспективным направлением остаётся распознание образов. Рукописный текст или «капча» давно уже не проблема — теперь сети успешно различают людей по фотографиям, учатся определять выражения лиц, сами рисуют котиков и сюрреалистические картины. Сейчас основную практическую пользу из этих развлечений извлекают разработчики беспилотных автомобилей — ведь чтобы оценить ситуацию на дороге, машине нужно очень быстро и точно распознать окружающие предметы. Не отстают и спецслужбы с маркетологами: по обычной записи видеонаблюдения нейронная сеть давно уже может отыскать человека в соцсетях. Поэтому особо недоверчивые заводят себе специальные камуфляжные очки, которые могут обмануть программу.
«Ты всего лишь машина. Только имитация жизни. Разве робот сочинит симфонию? Разве робот превратит кусок холста в шедевр искусства?» («Я, робот»)
Наконец, начинает сбываться и предсказание Розенблатта о самокопирующихся роботах: недавно нейросеть DeepCoder обучили программированию. На самом деле программа пока что просто заимствует куски чужого кода, да и писать умеет только самые примитивные функции. Но разве не с простейшей формулы началась история самих сетей?
Игры с ботами
Развлекаться с недоученными нейросетями очень весело: они порой выдают такие ошибки, что в страшном сне не приснится. А если ИИ начинает учиться, появляется азарт: «Неужто сумеет?» Поэтому сейчас набирают популярность интернет-игры с нейросетями.
Одним из первых прославился интернет-джинн Акинатор, который за несколько наводящих вопросов угадывал любого персонажа. Строго говоря, это не совсем нейросеть, а несложный алгоритм, но со временем он становился всё догадливее. Джинн пополнял базу данных за счёт самих пользователей — и в результате его обучили даже интернет-мемам.
Другое развлечение с «угадайкой» предлагает ИИ от Google: нужно накалякать за двадцать секунд рисунок к заданному слову, а нейросеть потом пробует угадать, что это было. Программа очень смешно промахивается, но порой для верного ответа хватает всего пары линий — а ведь именно так узнаём объекты и мы сами.
Ну и, конечно, в интернете не обойтись без котиков. Программисты взяли вполне серьёзную нейросеть, которая умеет строить проекты фасадов или угадывать цвет на чёрно-белых фотографиях, и обучили её на кошках — чтобы она пыталась превратить любой контур в полноценную кошачью фотографию. Поскольку проделать это ИИ старается даже с квадратом, результат порой достоин пера Лавкрафта!
При таком обилии удивительных новостей может показаться, что искусственный интеллект вот-вот осознает себя и сумеет решить любую задачу. На самом деле не так всё радужно — или, если встать на сторону человечества, не так мрачно. Несмотря на успехи нейросетей, у них накопилось столько проблем, что впереди нас вполне может ждать очередная «зима».
Главная слабость нейросетей в том, что каждая из них заточена под определённую задачу. Если натренировать сеть на фотографиях с котиками, а потом предложить ей задачку «отличи небо от земли», программа не справится, будь в ней хоть миллиард нейронов. Чтобы появились по-настоящему «умные» компьютеры, надо придумать новый алгоритм, объединяющий уже не нейроны, а целые сети, каждая из которых занимается конкретной задачей. Но даже тогда до человеческого мозга компьютерам будет далеко.
Сейчас самой крупной сетью располагает компания Digital Reasoning (хотя новые рекорды появляются чуть ли не каждый месяц) — в их творении 160 миллиардов элементов. Для сравнения: в одном кубическом миллиметре мышиного мозга около миллиарда связей. Причём биологам пока удалось описать от силы участок в пару сотен микрометров, где нашлось около десятка тысяч связей. Что уж говорить о людях!
Один слой умеет узнавать людей, другой — столы, третий — ножи…
Такими 3D-моделями модно иллюстрировать новости о нейросетях, но это всего лишь крошечный участок мышиного мозга
Кроме того, исследователи советуют осторожнее относиться к громким заявлениям Google и IBM. Никаких принципиальных прорывов в «когнитивных вычислениях» с 1980-х годов не произошло: компьютеры всё так же механически обсчитывают входящие данные и выдают результат. Нейросеть способна найти закономерность, которую не заметит человек, — но эта закономерность может оказаться случайной. Машина может подсчитать, сколько раз в твиттере упоминается «Оскар», — но не сможет определить, радуются пользователи результатам или ехидничают над выбором киноакадемии.
Теоретики искусственного интеллекта настаивают, что одну из главных проблем — понимание человеческого языка — невозможно решить простым перебором ключевых слов. А именно такой подход до сих пор используют даже самые продвинутые нейросети.
Сказки про Скайнет
Хотя нам самим сложно удержаться от иронии на тему бунта роботов, серьёзных учёных не стоит даже и спрашивать о сценариях из «Матрицы» или «Терминатора»: это всё равно что поинтересоваться у астронома, видел ли он НЛО. Исследователь искусственного интеллекта Элиезер Юдковски, известный по роману «Гарри Поттер и методы рационального мышления», написал ряд статей, где объяснил, почему мы так волнуемся из-за восстания машин — и чего стоит опасаться на самом деле.
Прежде всего, «Скайнет» приводят в пример так, словно мы уже пережили эту историю и боимся повторения. А всё потому, что наш мозг не умеет отличать выдумки с киноэкранов от жизненного опыта. На самом-то деле роботы никогда не бунтовали против своей программы, и попаданцы не прилетали из будущего. С чего мы вообще взяли, что это реальный риск?
Бояться надо не врагов, а чересчур усердных друзей. У любой нейросети есть мотивация: если ИИ должен гнуть скрепки, то, чем больше он их сделает, тем больше получит «награды». Если дать хорошо оптимизированному ИИ слишком много ресурсов, он не задумываясь переплавит на скрепки всё окрестное железо, потом людей, Землю и всю Вселенную. Звучит безумно — но только на человеческий вкус! Так что главная задача будущих создателей ИИ — написать такой жёсткий этический кодекс, чтобы даже существо с безграничным воображением не смогло найти в нём «дырок».
* * *
Итак, до настоящего искусственного интеллекта пока ещё далеко. С одной стороны над этой проблемой по-прежнему бьются нейробиологи, которые ещё до конца не понимают, как же устроено наше сознание. С другой наступают программисты, которые попросту берут задачу штурмом, бросая на обучение нейросетей всё новые и новые вычислительные ресурсы. Но мы уже живём в прекрасную эпоху, когда машины берут на себя всё больше рутинных задач и умнеют на глазах. А заодно служат людям отличным примером, потому что всегда учатся на своих ошибках.
Сделай сам
Нейронную сеть можно сделать с помощью спичечных коробков — тогда у вас в арсенале появится фокус, которым можно развлекать гостей на вечеринках. Редакция МирФ уже попробовала — и смиренно признаёт превосходство искусственного интеллекта. Давайте научим неразумную материю играть в игру «11 палочек». Правила просты: на столе лежит 11 спичек, и в каждый ход можно взять либо одну, либо две. Побеждает тот, кто взял последнюю. Как же играть в это против «компьютера»? Очень просто.
- Берём 10 коробков или стаканчиков. На каждом пишем номер от 2 до 11.
- Кладём в каждый коробок два камешка — чёрный и белый. Можно использовать любые предметы — лишь бы они отличались друг от друга. Всё — у нас есть сеть из десяти нейронов!
Теперь начинается игра.
- Нейросеть всегда ходит первой. Для начала посмотрите, сколько осталось спичек, и возьмите коробок с таким номером. На первом ходу это будет коробок №11.
- Возьмите из нужного коробка любой камешек. Можно закрыть глаза или кинуть монетку, главное — действовать наугад.
- Если камень белый — нейросеть решает взять две спички. Если чёрный — одну. Положите камешек рядом с коробком, чтобы не забыть, какой именно «нейрон» принимал решение.
- После этого ходит человек — и так до тех пор, пока спички не закончатся.
Ну а теперь начинается самое интересное: обучение. Если сеть выиграла партию, то её надо наградить: кинуть в те «нейроны», которые участвовали в этой партии, по одному дополнительному камешку того же цвета, который выпал во время игры. Если же сеть проиграла — возьмите последний использованный коробок и выньте оттуда неудачно сыгравший камень. Может оказаться, что коробок уже пустой, — тогда «последним» считается предыдущий походивший нейрон. Во время следующей партии, попав на пустой коробок, нейросеть автоматически сдастся.
Вот и всё! Сыграйте так несколько партий. Сперва вы не заметите ничего подозрительного, но после каждого выигрыша сеть будет делать всё более и более удачные ходы — и где-то через десяток партий вы поймёте, что создали монстра, которого не в силах обыграть.
А можно сыграть в эту игру прямо здесь
Кот-император | 08.04.2017
Нейросети — это настолько просто, что их можно строить даже из спичечных коробков. Мы решили наглядно показать, как это работает, и сделали для вас маленькую браузерную игру. Попробуйте обучить собственный ИИ!
Как работают нейронные сети и можно ли их обмануть?
В начале 2019 года на аукционе Sotheby’s в Лондоне появился необычный лот – инсталляция, главным элементом которой стала нейросеть. Предмет искусства представлял собой два экрана, соединённых между собой небольшим винтажным комодом из орехового дерева. Как раз там и хранилась нейронная сеть, которая постоянно генерировала уникальные портреты и выводила их на экраны.
Годом ранее другое нейросетевое произведение искусства – «Портрет Эдмонда де Белами» продали на аукционе Christie’s почти за полмиллиона долларов. На холсте размером 70х70 сантиметров был изображён мужчина в чёрном фраке и белой рубашке, а сама работа была написана компьютерным алгоритмом, созданным французским проектом Obvious.
Это первый случай за два века истории аукционного дома Christie’s, когда была продана картина, написанная нейросетью.
В отличие от обычных компьютерных программ нужно «обучать», чтобы они могли распознавать голоса, отличать живого человека от пакета или рисовать картины за полмиллиона долларов.
Как это работает?
Биологические нейронные сети у человека больше похожи на набор связей, при помощи которых мы анализируем и принимаем решения. Нейронные сети как технология, в свою очередь, способны решать точно такие же задачи, как и остальные алгоритмы машинного обучения, с той разницей, что нейросеть может «обучаться» на предыдущем опыте.
Даже по структуре нейросеть имитирует нервную систему живого человека: она состоит из огромного числа отдельных элементов – «нейронов», которые отвечают за вычисления. Каждый такой «нейрон» относится к определённому слою сети, так что, когда нейросеть обрабатывает полученные данные, те последовательно проходят обработку на всех слоях. Параметры «нейрона» могут самостоятельно изменяться. Тут все зависит от «опыта», который был получен в предыдущие операции.
Смысл таких разработок был в том, чтобы максимально точно смоделировать весь процесс человеческой нервной системы. В частности, разработчиков интересует наша способность обучаться и не повторять ошибки прошлого. В идеале нейронная сеть должна работать по тому же принципу и действовать на основании предыдущего опыта, с каждым разом делая всё меньше ошибок. Сложность полноценного распространения нейросети заключается в длительном процессе «обучения», ведь для того, чтобы сеть могла решать поставленные задачи и выдавать правильные ответы, через неё нужно пропустить миллионы данных. Этот процесс пойдёт быстрее, когда разработчикам удастся ускорить этот процесс.
Где уже применяются нейросети?
Область применения нейронных сетей расширяется с каждым годом, но чаще всего мы слышим о развлекательной функции таких технологий. В 2016 году на рынке появилось сразу несколько проектов, которые в основе своей работы использовали нейронные сети. Способности этой технологии демонстрировала Prisma и MLVCH – два мобильных приложения, которые позволяли переносить художественный стиль на фотографии обычных пользователей.
Другое приложение – MSQRD предлагало пользователям изменять вид фотографий, выбирать и накладывать на фото маски-фильтры или эффекты, которые уже были в библиотеке приложения. За все эффекты была ответственна нейронная сеть. Способности собственных нейронных сетей демонстрируют и крупные технологические компании. Например, Google разработал и показал программу AlphaGo для игры в го. Сразу после этого программа победила в матче против Кэ Цзе, который до этого считался сильнейшим в мире участником в эту японскую игру.
Тут нужно понимать, что развлекательные сервисы создаются скорее для демонстрации возможностей нейронной сети и вариантов ее обучения. В процессе игры разработчики обучают нейросетевой алгоритм, а за счёт игровых ситуаций технология может смоделировать практически все сценарии живого поведения и «научиться» делать так же.
О перспективности таких разработок говорят и цифры. Согласно отчёту аналитической компании Allied Analytics, к 2023 году объём рынка нейросетей достигнет $38 млрд, в то время как в 2016 году этот показатель составил всего $7 млрд.
«Рынок нейронных сетей обусловлен ростом спроса на облачные решения и большие данные, а также увеличением числа решений для прогнозирования рынка. Мы ожидаем, что расширение областей приложений для нейронных сетей создаст выгодные возможности для роста рынка», – пишут аналитики Allied Analytics в своём отчёте.
Можно ли обмануть нейросеть?
Нейронная сеть необходима, чтобы решать в основном два типа задач: предсказывать какие-то события и распознавать объекты. Проблема в том, что в этой области есть такое понятие, как «состязательная атака»: нейросеть можно легко обмануть и заставить выдать ложный ответ. Такой метод используют учёные, чтобы проверить устойчивость нейросети к нестандартным решениям. Например, группа исследователей из Левенского католического университета нашла способ сделать человека невидимым для нейросети, просто распечатав абстрактный постер и наклеив его на учёного. В ходе эксперимента нейросеть смогла распознать только одного человека, в то время как учёный с постером в руках оставался невидим. Проблема с атаками на нейросетевые алгоритмы может привести к изменению решения от нейросети – достаточно немного повернуть образец, и нейросеть воспримет данные неправильно.
Какие у нейросетей перспективы?
Нейросети могут качественно анализировать данные, чтобы исключить ошибки, связанные с человеческим фактором. Предполагается, что такие технологии должны избавить нас от муторных и скучных задач и решений, которые мы принимаем ежедневно, но говорить о полноценном распространении нейросетей и возможностях их использования для более сложных задач пока рано. Если такая технология редактирует ваши фотографии из Instagarm и подбирает для них стиль художников семнадцатого века, это кажется безобидным. Другое дело – использование нейросети в реальной жизни, когда, например, беспилотный автомобиль не заметит собаку во время движения по дороге или примет пакет за человека, так что проблема с возможностью состязательных атак ещё остаётся.
Как работают нейронные сети, которые мы используем каждый день
Если вы используете новое приложение Photos от Google, Cortana от Microsoft или новую переводческую функцию Skype, вы используете искусственный интеллект на ежедневной основе. Хотя и некоторую его форму. ИИ оставался мечтой с 50-х годов и только недавно стал практически реальным — благодаря системам программного обеспечения под названием нейронные сети. Давайте разберемся, как они работают.
Поумневшие компьютеры
Многие вещи, которые людям кажутся трудновыполнимыми, можно сделать с помощью компьютеров. Решить дифференциальное уравнение? Без проблем. Создать точный прогноз погоды или превратить Интернет в одну веб-страницу? Несложно. Но попросите компьютер рассказать вам о разнице между порно и искусством эпохи Возрождения, и он обломается.
Компьютеры просто не могут рассуждать так же, как это делают люди. Они безуспешно пытаются интерпретировать контекст реальной ситуации или сделать решение, исходя из нюансов, которые жизненно важны для истинного понимания человеческого мира. Нейронные сети были разработаны в 50-х годах прошлого века как потенциальное решение этой проблемы.
Беря за основу человеческий мозг, нейронные сети являются системами программного обеспечения, которые могут самообучаться на основе получаемых знаний о мире людей. Они используют различные слои математической обработки, чтобы извлекать массу информации из всего, что получают, от человеческой речи до цифровых снимков. По сути, они учатся и меняются с течением времени. Вот почему они обеспечивают компьютеры более умным и тонким пониманием того, с чем те сталкиваются. Правда, потребовалось много времени, чтобы достичь такого результата.
Зима нейронных сетей
В 50-х годах ученые не знали, почему человеческий мозг разумен — в принципе, мы и сейчас этого не понимаем — но знали, что он разумен. Поэтому они спросили себя, как работает человеческий мозг в физическом смысле, и можно ли создать искусственную версию этого разума.
Мозг состоит из миллиардов нейронов, длинных тонких клеток, которые соединяются друг с другом в сеть, передающую информацию с помощью маломощных электрических зарядов. Так или иначе, из этой, казалось бы, простой биологической системы возникает что-то более глубокое: разум, который может распознавать лица, вырабатывать философию, с боем изучать физику частиц и так далее. Если бы мы могли воссоздать эту биологическую систему электронным путем, догадались инженеры, родился бы и искусственный интеллект.
Есть несколько успешных примеров ранних искусственных нейронных сетей вроде Perceptron Фрэнка Розенблатта, которая использовала аналоговые электрические компоненты, чтобы создать бинарный классификатор. Это такое умное название системы, которая принимает ввод — скажем, изображение или фигуру — и определяет его в одну из двух категорий типа «квадратный» и «неквадратный». Однако очень скоро ученые уперлись в стенку. Во-первых, компьютеры на то время не обладали достаточной вычислительной мощью, чтобы эффективно принимать множество таких решений. Во-вторых, ограниченное число синтетических нейронов также ограничивало сложность операций, которые могла проводить сеть.
В случае с Perceptron Розенблатта, например, один набор искусственных нейронов умел отличать квадраты от неквадратов. Но если бы вы захотели добавить способность воспринимать что-то еще о квадратах — красный он или нет, например — вам потребовался бы дополнительный набор.
В то время как биология мозга может быть простой на микроскопическом уровне, в своей целостности она невероятно сложная. И эта сложность на макроуровне была неподъемной для компьютеров 1950 года. В результате в течение следующих десятилетий нейронные сети получили забвение. Наступила «зима нейронных сетей», как говорит Джейсон Фрейденфельдс из Google.
Достижения неврологии
Зима для одного оборачивается летом для другого. С 1960-х годов наше понимание человеческого мозга прогрессировало не по дням, а по часам. В те первые дни неврологии большое внимание уделялось нашим визуальным системам. Объясняет профессор Чарльз Кадью:
«Это, пожалуй, лучше всего понятая сенсорная модальность и, вероятно, лучше всего понятая часть мозга. Десятилетиями мы знали, что нейроны по-разному активируются, когда вы проходите через визуальный поток. В сетчатке глаза нейроны восприимчивы к точкам света и тьмы; в первичной зрительной коре нейроны возбуждаются очертаниями и контурами; в высших областях зрительной коры нейроны отвечают на лица, руки, сложные объекты, природные и рукотворные. То есть там нейроны уже не реагируют на области света и тьмы или контуры в принципе».
Мы пользуемся нейронными сетями каждый день
Оказывается, различные части биологической сети мозга отвечают за различные аспекты так называемого визуального распознавания. И эти части выстроены иерархически.
Это справедливо и для других аспектов познания. Части мозга, обрабатывающие речь и, возможно, даже сам язык, работают аналогичным образом. Иерархия различных уровней нейронов на каждом из них получает собственную картину, затем передает ее на другой, более высокий уровень, чтобы наделить ее большим числом деталей. На каждом этапе рассуждения становятся более абстрактными, что позволяет потоку звуков превращаться в слова, которые что-то для нас означают, или же набор темных и светлых узоров в нашей сетчатке определяется как «кошка» в нашей голове.
Эти виды иерархий были решающим ключом для исследователей, которые до сих пор задумывались об искусственных нейронных сетях. «Все это стало путеводной звездой для нейронных сетей, — говорит Кадью. — Мы просто не знали, как заставить их вести себя таким образом».
Вдохновение биологией
По правде говоря, искусственные сети, используемые сегодня, в действительности не строятся на базе мозга, как вы могли бы ожидать. Они только «вдохновляются мозгом», отмечает Кадью, в том смысле, что они являются реальными системами ПО, которые задействуют слоевой подход для выработки понимания, а не сетью узлов, сообщающих информацию туда и обратно между собой.
Эти системы ПО используют один алгоритм для обработки представления ввода, а затем передают его следующему слою для обработки другим алгоритмом, который даст более высокоуровневое понимание, и так далее. Другими словами, есть больше смысла в том, чтобы думать об искусственных нейронных сетях как о каскадных математических уравнениях, которые могут различать отдельные детали и паттерны, считает Фрейденфельдс.
В случае распознавания образов, например, первый слой нейронной сети может анализировать яркость пикселя, а затем передавать его второму, чтобы определять кромки и линии, образованные полосками аналогичных пикселей. Следующие слои могут быть в состоянии идентифицировать формы и текстуры, а дальше по цепочке они могут определять кластеризацию деталей этих абстрактных изображений в виде реальных физических элементов вроде глаз или колес.
В самом конце кластеризация высокоуровневых деталей может интерпретироваться как реальный объект: два глаза, нос и рот образуют лицо, скажем, колеса, кресло и руль образуют велосипед. На конференции I/O в мае Google объявила, что нейронные сети, работающие в основе продуктов вроде Google Photos сейчас используют 30 разных слоев в общем, чтобы осмысленно обрабатывать изображения.
Нейронные сети не ограничиваются только распознаванием изображений, хотя это наш самый продвинутый способ их использования на данный момент. В случае распознавания речи нейронная сеть нарезает слышимую речь на короткие фрагменты, которые затем переводит в гласные звуки. Последующие слова могут определять звучание отдельных гласных звуков в сочетании друг с другом, формируя слова, слова сочетаются, образуя фразы, и, наконец, фразы образуют осмысленную речь, которую вы только что наговорили в телефон.
Вы уже догадываетесь, что это большой шаг от однослойной системы Perceptron. По сути, все это время было два ограничения на успешное развитие нейронных сетей. Первым была вычислительная мощь, которая у нас теперь есть. Второе — необходимый объем информации для правильного обучения корректной работе.
Метод обратного распространения ошибки и глубокое обучение
Нейронные сети не могут обучаться, пока вы не вбросите в них достаточно данных. Они нуждаются в больших объемах информации, чтобы понимать ее, пропускать через слои и пытаться классифицировать. Затем они могут сравнивать свои классификации с реальными ответами — и погладить себя по головке или же поднапрячься.
В случае анализа изображений это будет означать поддержку вашей нейронной сети набором помеченных фотографий, известных как обучающий сет. Google использовала YouTube, чтобы поддерживать такой обучающий сет в прошлом. В случае распознавания речи обучающий сет будет серией аудиоклипов с описанием сказанного. При большом объеме вводных данных нейронная сеть может попытаться классифицировать каждый объект и объединить информацию, полученную от разных слоев, чтобы сделать предположения о том, что она слышит или видит. В процессе обучения ответ машины сравнивается с созданным человеком описанием наблюдаемого объекта. Если все верно, сеть молодец.
А если нет?
«Если проанализированный объект был лицом, а она сказала, что это дом, она использует метод обратного распространения ошибки (back-propagation), чтобы поправить себя, — объясняет Кадью. — Она делает шаг назад по каждому предыдущему слою и каждый раз вносит математические поправки в этот слой, чтобы в следующий раз ответ был верным».
Сначала сеть будет ошибаться постоянно, но ее производительность постепенно улучшится, слои будут все более и более натренированными точно определять, что видят. Этот повторяющийся процесс прохождения образца через сеть и метод обратного распространения ошибки для автокоррекции известны как глубокое обучение, и именно оно наполняет сети человекоподобным интеллектом.
В прошлом было довольно сложно накопить достаточно информации, чтобы накормить что-то настолько жадное до данных, как нейронная сеть. Но в наши дни вокруг плавает настолько много данных, что процесс значительно упростился. По всему Интернету размещены снимки с описанием, которые точно — или почти точно — описывают то, что должен увидеть компьютер, диалоги из фильмов и соответствующие скрипты помогают системе распознавания речи точно изучить разговор людей. Вооружившись всеми этими данными, нейронные сети набираются уму-разуму.
Прямая дорогая к интеллекту
И это работает. Когда Google представила свою первую систему распознавания речи на основе нейронной сети в 2011 году — ту, которая работает в Now и Chrome — ее уровень ошибок держался на 25%. Это значит, что один раз из четырех, когда вы ее использовали, она путалась.
Спустя три года после обучения уровень ошибок упал до 8%. Последняя попытка Google показать мощь нейронных сетей была с Photos, их интеллект оказался каким-то неправдоподобным.
Вот как на Gizmodo Марио Агильяр описал свою первую работу с нейронной сетью:
«Она до безумия хорошо работает. Даже жутковато. Сначала мы были поражены, потом насторожились. Мы работали с небольшим количеством фотографий на телефоне, но, несмотря на ограниченный пул, Google Photos смогло довольно точно определить нужные мне вещи. Приложение правильно определило моих лучших друзей. Но когда вы начинаете искать случайные вещи в своей коллекции, Photos реально сводит с ума. Пиво? Оно находит фотографии пива. Бары? Находит фото баров».
Не только Google добивается успеха. В прошлом году Facebook раскрыла алгоритм DeepFace, который может распознавать конкретные лица людей с 97-процентной точностью. Качество на уровне человеческого. Wolfram Alpha создала систему, которая может определять объекты и даже позволяет внедрить ее в ваше собственное программное обеспечение. Цифровой персональный ассистент Cortana от Microsoft настолько точен, что может определить разницу между снимком пемброк-вельш-корги и кардиган-вельш-корги. А вы можете найти разницу между этими породами собак? Зуб даю, что нет.
Кардиган-вельш-корги слева
И дело не только в распознавании изображений. Skype использует нейронные сети для перевода с одного языка на другой на лету; китайский поисковик Baidu использует их для таргетированной рекламы в своем поисковике; совсем недавно Google представила систему с чат-ботом, который обучается с использованием сетей.
Нейронные сети наконец дают компьютерам способность понимать человеческий мир и делать разумные выводы о нем. Они уже обладают таким знанием и опытом, что могут создавать психоделические шедевры изобразительного искусства в процессе обучения.
Несовершенная наука и скандал с гориллами
Как и все «умное», нейронные сети могут и ошибаются. Только в этом месяце приложение Google Photos ошибочно пометило двух чернокожих людей на фотографии как «горилл». Новый разумный механизм распознавания изображений Flickr, работающий на нейронной сети Yahoo, тоже пометил чернокожего человека как «обезьяну». Конечно, ничто не идеально. Google быстро поправила проблему, просто убрав метку «горилла» из Photos; в дальнейшем, без сомнений, сеть будут учить жестче.
Конечно, технологию на старте легко обвести вокруг пальца. Обмануть нейронную сеть довольно просто. Снимки ниже, например, могут довольно легко обмануть нейронные сети — те подумают, что видят пингвинов, мячи и пульты дистанционного управления, хотя человек увидит на них лишь абстрактные узоры, хотя и созданные на основе реальных объектов.
«Путаница в алгоритме связана с различиями в том, как он видит мир по сравнению с людьми, — говорит Джефф Клюн из Университета Вайоминга в Ларами, который и обнаружил эту странность. — Когда люди определяют гепарда, глядя на общий набор — правильную форму тела, изгибы и так далее — нейронная сеть заинтересована только в частях объекта, которые отличают его от других».
И конечно, нейронные сети не имеют встроенного чувства приличия и осторожности, которые имеются у людей. Как ребенок, выбалтывающий любую информацию у него на уме, нейронные сети с нетерпением выдают свое лучшее предположение в надежде, что оно будет правильным, даже если не уверены на все 100%. И как человек может сомневаться в таких случаях, возможно, нейронная сеть научится делать то же самое.
Скандал с гориллами родился как отражение человеческого мира. В интервью Wall Street Journal эксперт в области искусственного интеллекта Вивьен Мин отметила, что виноваты, скорее всего, обучающие сеты Google. Фотографии в Интернете отражают в большинстве белый мир, поэтому неудивительно, что нейронная сеть не получила должного опыта для идентификации черных людей.
Сила в цифрах
Помимо скармливания нейронным сетям точных данных, ученые также совершенствуют программное обеспечение путем объединения сетей. Недавние исследования в сотрудничестве Google и Стэнфордского университета перешли в создание программного обеспечения, которое может описывать целые сцены, а не просто один объект на них, вроде кота.
Этот практически подвиг осуществился благодаря объединению нейронной сети, распознающей изображения, с сетью, распознающей естественную речь. Дайте сети, обрабатывающей речь, предложение вроде «мы сели перекусить сэндвичами», и она выведет из него высокоуровневые понятия вроде «поглощение пищи» и «сэндвичи». После этого выходные данные можно скормить другой сети обработки естественного языка, которая извлечет смысл из этих понятий и переведет их в предложение, которое заявит то же самое, но другими словами.
Так нейронные сети, используемые Skype, работают при переводе на лету. Что сделали исследователи из Стэнфорда и Google, так это заменили первую нейронную сеть сетью, распознающей изображения, и скормили ее сети с пониманием естественного английского языка. Первая производит высокоуровневые концепты того, что изображено на снимке, — скажем, человек, сэндвич и еда. Вторая пытается преобразовать эти понятия в предложение, описывающее изображение, например, «человек кушает сэндвич». Ниже вы видите подборку таких преобразований (с переводом). Результаты не идеальны, но впечатляют.
- Первый столбец (почти без ошибок): человек едет на мотоцикле по грязной дороге; группа молодых людей играет в фрисби.
- Второй столбец (минимальные ошибки): два пса играют на траве; два хоккеиста дерутся за шайбу.
- Третий столбец (что-то связанное с картинкой): скейтбордист совершает трюк на трамплине; девочка в розовой шапке надувает пузыри.
- Четвертый столбец (не связанное с картинкой): собака прыгает, чтобы поймать фрисби; холодильник, забитый едой и напитками.
Так если нейронные сети развиваются так быстро, где предел?
«Вы определенно можете ожидать серьезных улучшений в распознавании изображений и речи в ближайшие годы», — говори Кадью, отмечая, что по сути нейронные сети существуют пока только пару лет.
Что касается обработки естественного языка, не совсем понятно, смогут ли нейронные сети справиться с проблемами в этой области. В то время как распознавание речи и изображений работает слоевым образом, Кадью отмечает, что неврологи не уверены, можно ли его использовать для обработки языка. Возможно, обработка языка искусственными методами потребует времени.
Вперед, к рабочему ИИ
Короче, ясно одно: эти виды искусственных интеллектов уже оказывают помощь людям. В прошлом вам нужно было просеивать свои фотографии, чтобы составить альбом с последнего отпуска или найти снимки вашего приятеля, потягивающего пиво. Сегодня нейронные сети делают это для вас. Google Photos автоматически создает альбомы, и его функция умной идентификации снимков работает с пугающей точностью.
Пока что это программное обеспечение, ориентированное на пользователей, просто трюк по сравнению с теми нейронными сетями, которые однажды будут работать для нас.
Нетрудно представить алгоритм обработки снимков, который наберет достаточно ума, чтобы выявлять опухоли на изображениях, врачу останется лишь проверить и подписать результат. Системы распознавания голоса тоже могут стать настолько продвинутыми, что телемаркетинговые кампании будут запускаться сугубо на программном обеспечении. Сети обработки языка позволят писать новостные тексты машинам.
В некоторой степени все это уже происходит. Изменения достаточно глубокие для того, чтобы ученые Оксфордского университета заявили, что половина рабочих мест, включая и мое, может быть потеряна в пользу систем ИИ в ближайшие годы.
Однако сдвиги в экономике и занятости вследствие технологических инноваций происходили много раз и прежде, еще с выходом печатного пресса и автомобильного двигателя, с появлением компьютера и Интернета. Уйдут одни места, появятся другие. Появятся умные системы, сервисы лучше, и у людей будет больше времени решать те проблемы, которые не могут решить компьютеры.
Самый понятный видеокурс о том, как работают нейросети
Нейронные сети произвели фурор в IT, и интерес к ним не угасает. Эта подборка видеолекций внесёт ясность в понимание процессов нейросети.
Сравнительно недавно появилась возможность создавать искусственные нейронные сети. Существуют программы, позволяющие моделировать и создавать нейросети. Стало понятно, что применение этой технологии полезно в большинстве отраслей: математика, медицина, компьютерные науки и т. д. Об этом и пойдёт разговор на первой лекции курса. Здесь вы также найдете немного теории на тему нейронных сетей.
https://www.youtube.com/watch?v=YJTbfbR-ouc
В этом видеоуроке речь пойдет о том, как работают нейроны и как они передают сигнал, основываясь на биологических процессах. Мозг, как у животного, так и у человека, похож на нейронную сеть, которая состоит из нейронов, что в свою очередь состоят из дендритов, аксонов и прочих отростков. Задача этих элементов – принимать сигналы извне и отправлять обработанную информацию соседним клеткам.
https://www.youtube.com/watch?v=Dpu954wd8Fw
Автор курса в этом видео подробно рассказывает о строении нейросети с примерами и картинками. Настоящая биологическая нейронная сеть имеет трёхмерную структуру. Это значит, что отследить, как соединены между собой клетки, почти невозможно. Поэтому зачастую нейросети создаются плоскими, чтобы можно было с ними работать, не имея огромных компьютерных мощностей. Также условились, что сеть состоит из трёх слоев искусственных нейронов: входного, скрытого и выходного.
https://www.youtube.com/watch?v=XMciAwPa4AQ
В этом видеотуториале речь пойдет о строении нейрона. В общем случае нейрон имеет такое строение: входной сигнал > блок, объединяющий синаптические веса, блок суммирования и блок нелинейного преобразования > выходной сигнал. Как только входной сигнал попал в нейрон, он умножается на соответствующий вес. После этого умноженные данные проходят агрегацию и подаются на выход или попадают под действие функции активации.
https://www.youtube.com/watch?v=k2dJwqsYlzg
Очень грубо и обобщённо работу нейросети можно разбить на несколько этапов. Сначала входящий сигнал подаётся на входной слой сети. Далее нейроны входного слоя передают информацию нейронам скрытого слоя, где и происходит решение поставленной задачи. Потом нейроны скрытого слоя транслируют обработанный сигнал на выходной слой, где формируется результат и выдается ответ.
https://www.youtube.com/watch?v=sHKbF0bsUz4
Автор рассматривает важные темы работы нейронной сети, которые касаются входного и выходного слоя. Нормализация и масштабирование, метод “Один из N”, вопросы организации сетей и наличие нескольких скрытых слоев – вот некоторые из тем, рассматриваемых в этой видеолекции.
https://www.youtube.com/watch?v=p7DNVKXEto8
Далее следуют 3 очень важные видеолекции по обучению нейросети, к которым нужно подойти со всей серьезностью.
В этом уроке речь пойдет о том, как работают нейросети, и как добиться того, чтобы они решали поставленные задачи, т. е. что нужно сделать с сетью, чтобы она работала правильно. Любая сеть обладает двумя уровнями жизненного цикла: обучение и функционирование. В свою очередь обучение делится на: обучение с учителем и без него.
https://www.youtube.com/watch?v=UdWTckikIRI
Технологий обучения сети очень много, т. к. каждый специалист в этом направлении старается привнести что-то новое, имея свои правила и принципы. Одной из основных технологий является “Метод наискорейшего спуска”. Этот метод имеет следующие характеристики: используется только при обучении с учителем, важны знания по высшей математике, от погрешности и силы входного сигнала зависит вес.
https://www.youtube.com/watch?v=xzXoIjMcOMk
Этот видеоурок автор начинает с объяснения темы обучения скрытых слоев. Ранее в курсе рассматривались сети, которые имели только входной и выходной слои. В таких сетях всё просто – меняются веса нейронов, и операция повторяется. Но когда есть скрытые нейроны, всегда непонятно, за что они отвечают, и как у них менять веса. На помощь приходит метод обратного распространения ошибки.
https://www.youtube.com/watch?v=mvV1XieKxbs
В этом уроке мы переходим непосредственно к практике. Весь материал рассчитан на людей, которые не знакомы с языками программирования, поэтому обзор происходит на готовых примитивных программах, написанных на C#. В начале урока автор производит подготовительные мероприятия и устанавливает необходимый софт. Практическая часть основана на рассмотрении характеристик и принципов работы одного нейрона.
https://www.youtube.com/watch?v=pQlzb4RN8ic
Нейронные сети — всё по этой теме для программистов
Кейс: Хабиб vs МакГрегор или Распознавание лиц на Python
Учимся представлять фотографии в виде матриц, обрабатывать их, детектить лица и натравливать на них нейронку.
Тест: что реально, а что создала нейросеть?
Нейросеть искусно имитирует людей, котиков и даже картины. Проверьте, сможете ли вы отличить реальное от того, что создали нейросети.
Чего ждать в сфере ИИ и машинного обучения в 2021 году?
Нейросети становится умнее с каждым годом. Рассказываем о том, чего ждать в сфере ИИ и машинного обучения в 2021 году
hent-AI: нейросеть, которая убирает цензуру из аниме
Нашли на GitHub любопытную нейросеть. По ссылке можно найти принцип работы и инструменты, а также исходный код, чтобы запустить у себя или доработать.
Как работает нейронная сеть — простое объяснение на цветочках
В этом видео автор на простом примере объясняет принципы работы линейного слоя нейронной сети и базовые термины.
Правильный NLP: как работают и что умеют системы обработки естественного языка
О том, как правильно построить эффективный процесс обработки человеческой речи, где сегодня применяются NLP-решения и с какими задачами они справляются.
Как с помощью нейросети стилизовать изображение под работу известного художника: разбираемся с нейронным переносом стиля
Как стилизовать свои изображения под картины известных художников с помощью концепции глубокого обучения? Разбираемся в статье.
Какие из этих нейросетей мы выдумали? Тест-угадайка от Tproger и ABBYY
С помощью нейросетей можно и генерировать сплющенных котов, и автоматизировать работу в организациях с многомиллиардным оборотом. Сможете по описанию нейросети угадать, существет ли она?
Что такое нейронная сеть и как она работает — основы простым языком
В этом видео рассказывается, из чего состоит нейросеть и как она работает на примере распознавания рукописных цифр.
Проекты искусственного интеллекта, с которыми можно поиграться уже сегодня
Статья расскажет о применении искусственного интеллекта и машинного обучения на практике. Обучение осуществляется в игровой форме.
Искусственный интеллект: основные задачи и методы на примерах из жизни
В данном материале на примерах их жизни описаны несколько методологий и задач искусственного интеллекта: от нейронок до экспертных систем
GPU — это не только про игры: четыре примера с NVIDIA GTC 2019
По итогам NVIDIA GTC 2019 собрали для вас четыре современных примера применения GPU: технологические тренды, за которые стоит зацепиться айтишникам.
Кто это нарисовал — нейросеть или художник? Тест-угадайка от Tproger и «Системный Блокъ»
Сможет ли робот превратить кусок холста в произведение искусства? А если это нейросеть, обученная на великих картинах? Почувствуйте всю силу современных технологий в тесте «Нейросеть или художник», который мы сделали…
«Умная» колонка, наушники с технологией открытого звука и мультиподписка на сервисы: итоги конференции YaC 2018
Приглашенные спикеры рассказали об использовании цифровых технологий в сферах торговли, маркетинга и информационных технологий.
Инструменты для работы с интернетом вещей и звонки в смешанной реальности: обзор конференции Microsoft Build 2018
7 мая 2018 года началась ежегодная конференция для разработчиков Microsoft Build 2018. Компания рассказала о наступлении эры «умных» устройств и представила новые продукты.
Как работает беспилотный транспорт
Знаете ли вы, как работает беспилотный транспорт? В статье вы прочитаете о перспективах автономных автомобилей и технологиях, применяемых для их создания и обучения. А также о том, рискуют ли таксисты и дальнобойщики потерять работу с появлением автономных автомобилей.
Пишем нейросеть на Go с нуля
В этой статье мы шаг за шагом создадим нейросеть на Go для решения задачи классификации, попробовав с её помощью различить цветы ириса.
Курс «Нейронные сети»
Русскоязычный курс, рассказывающий, как программировать нейронные сети — модели биологических нейронных сетей мозга, в которых нейроны имитируются относительно простыми элементами.
Курс «Введение в компьютерное зрение»
Русскоязычный курс, рассматривающий как базовые понятия компьютерного зрения, так и ряд современных алгоритмов, позволяющих решать практические задачи. Отдельно отмечается связь методов компьютерного зрения с обработкой зрительной информации в мозгу человека. Курс…
Обучение автопилота на Python в Grand Theft Auto V
Достаточно известный среди любителей языка Python разработчик по имени Гаррисон «Sentdex» Кинсли выпустил очередной курс, «Python Plays GTA V».
Общий взгляд на машинное обучение: классификация текста с помощью нейронных сетей и TensorFlow
В статье подробно описывается пример создания нейронной сети для классификации текста при помощи TensorFlow. Материал понятен даже без спецподготовки.
Нейронная сеть помогает писать код для нейронных сетей: обзор инструмента Neural Complete
На GitHub появился интерфейс для автозаполнения Neural Complete. Это нейронная сеть, которая помогает писать код для создания нейронных сетей.
Машинное обучение и нейронные сети на PHP: библиотека PHP-ML
Согласно Википедии, машинное обучение (англ. Machine Learning) — обширный подраздел искусственного интеллекта, математическая дисциплина, использующая разделы математической статистики, численных методов оптимизации, теории вероятностей, дискретного анализа, и извлекающая знания из данных.
Подборка материалов для изучения машинного обучения
Машинное обучение сейчас является одной из самых востребованных областей в программировании. И действительно — человек издавна мечтал создать ИИ, и сейчас эта мечта близка как никогда. Алгоритмы машинного обучения могут…
Разнообразие нейронных сетей. Часть вторая. Продвинутые конфигурации
В первой части мы разобрались с базовыми, не очень сложными видами архитектур искусственных нейронных сетей. Настало время закончить начатое.
Шпаргалка по разновидностям нейронных сетей. Часть первая. Элементарные конфигурации
Новые виды архитектуры нейронных сетей появляются постоянно, и в них можно запутаться. Мы собрали для вас своеобразную шпаргалку, содержащую большую часть существующих видов ИНС. Хотя все они представлены как уникальные,…
10 полезных книг по машинному обучению
Машинное обучение — обширная тема, ставшая в последнее время весьма важной. Для тех, кто хочет с ней познакомиться, эта подборка станет приятным подспорьем. Будем рады, если вы расскажете нам в комментариях о других хороших книгах о машинном…
Первые шаги искусственного интеллекта
Самые ранние упоминания об искусственно созданных человекоподобных существах относятся еще к Древнему Египту, но за минувшие тысячелетия человечество только сейчас встало на порог новых эпохальных открытий в области искусственного интеллекта.…
Изучаем нейронные сети за четыре шага
Рассказывает Per Harald Borgen В этот раз я решил изучить нейронные сети. Базовые навыки в этом вопросе я смог получить за лето и осень 2015 года. Под базовыми навыками я…
Линус «Москвич» Торвальдс: какие автомобили распознает нейронная сеть в известных программистах
Месяц назад популярный сайт «Авто.ру» обновил свои приложения для смартфонов, добавив функцию распознавания автомобиля по его фотографии. Алгоритм основан на нейронных сетях, обучение проводилось на большой выборке — почти 6 миллионов фотографий…
9 новых технологий, которые вы можете освоить за лето и стать ценнее на рынке труда
Сегодня IT развивается так быстро, как никогда. Многие вещи, бывшие общепринятыми ещё каких-то пару лет назад, сегодня уже не используется. И наоборот — появилась куча крутых штук, от которых фанатеют все программисты:…
Изучаем нейронные сети: с чего начать
В данной статье собраны материалы — в основном русскоязычные — для базового изучения искусственных нейронных сетей.
Объяснение: Нейронные сети | MIT News
За последние 10 лет самые эффективные системы искусственного интеллекта, такие как распознаватели речи на смартфонах или новейший автоматический переводчик Google, были созданы с помощью техники, называемой «глубокое обучение».
Глубокое обучение — это фактически новое название подхода к искусственному интеллекту, называемого нейронными сетями, который входил и выходил из моды уже более 70 лет. Нейронные сети были впервые предложены в 1944 году Уорреном Маккалоу и Уолтером Питтсом, двумя исследователями из Чикагского университета, которые переехали в Массачусетский технологический институт в 1952 году в качестве членов-основателей того, что иногда называют первым отделом когнитивной науки.
Нейронные сети были основным направлением исследований как нейробиологии, так и информатики до 1969 года, когда, согласно знаниям информатики, они были убиты математиками Массачусетского технологического института Марвином Мински и Сеймуром Папертом, которые через год стали содиректорами. новой лаборатории искусственного интеллекта Массачусетского технологического института.
Затем эта техника возродилась в 1980-х, снова потеряла свою актуальность в первом десятилетии нового столетия и вернулась, как гангстеры во втором, во многом благодаря возросшей вычислительной мощности графических чипов.
«Есть мнение, что идеи в науке чем-то похожи на эпидемии вирусов», — говорит Томазо Поджио, профессор мозга и когнитивных наук Юджина Макдермотта в Массачусетском технологическом институте, исследователь Института исследований мозга Макговерна при Массачусетском технологическом институте и директор центра Массачусетского технологического института. для мозга, разума и машин. «По-видимому, существует пять или шесть основных штаммов вирусов гриппа, и, по всей видимости, каждый из них возвращается примерно через 25 лет. Люди заражаются, у них развивается иммунный ответ, поэтому они не заражаются в течение следующих 25 лет.А еще есть новое поколение, готовое заразиться тем же штаммом вируса. В науке люди влюбляются в идею, воодушевляются ею, забивают ее до смерти, а затем получают иммунизацию — они устают от нее. Так что идеи должны иметь одинаковую периодичность! »
Важные вопросы
Нейронные сети — это средство машинного обучения, при котором компьютер учится выполнять некоторые задачи, анализируя обучающие примеры. Обычно образцы маркируются заранее вручную.Система распознавания объектов, например, могла бы получать тысячи изображений автомобилей, домов, кофейных чашек и т. Д. С этикетками и находить на изображениях визуальные паттерны, которые постоянно соотносятся с определенными этикетками.
Нейронная сеть, смоделированная на основе человеческого мозга, состоит из тысяч или даже миллионов простых узлов обработки, которые плотно связаны между собой. Большинство современных нейронных сетей организованы в слои узлов, и они имеют «прямую связь», что означает, что данные проходят через них только в одном направлении.Отдельный узел может быть подключен к нескольким узлам на нижнем уровне, от которого он получает данные, и к нескольким узлам на верхнем уровне, на которые он отправляет данные.
Каждому из своих входящих соединений узел присваивает номер, известный как «вес». Когда сеть активна, узел получает другой элемент данных — другое число — по каждому из своих соединений и умножает его на соответствующий вес. Затем он складывает полученные продукты вместе, получая одно число.Если это число ниже порогового значения, узел не передает данные на следующий уровень. Если число превышает пороговое значение, узел «срабатывает», что в современных нейронных сетях обычно означает отправку числа — суммы взвешенных входных данных — по всем его исходящим соединениям.
Когда нейронная сеть обучается, все ее веса и пороги изначально устанавливаются на случайные значения. Обучающие данные поступают на нижний уровень — входной уровень — и проходят через последующие уровни, умножаются и складываются сложным образом, пока, наконец, не попадают, радикально преобразованные, на выходной уровень.Во время обучения веса и пороги постоянно корректируются до тех пор, пока данные обучения с одинаковыми метками не будут давать одинаковые результаты.
Умы и машины
У нейронных сетей, описанных Маккаллоу и Питтсом в 1944 году, были пороговые значения и веса, но они не были расположены по слоям, и исследователи не указали какой-либо механизм обучения. Маккалоу и Питтс показали, что нейронная сеть, в принципе, может вычислить любую функцию, которую может выполнить цифровой компьютер.В результате получилось больше нейробиологии, чем информатики: суть заключалась в том, чтобы предположить, что человеческий мозг можно рассматривать как вычислительное устройство.
Нейронные сети продолжают оставаться ценным инструментом для нейробиологических исследований. Например, определенные схемы сети или правила настройки весов и пороговых значений воспроизводят наблюдаемые особенности нейроанатомии и познания человека, что свидетельствует о том, что они фиксируют что-то о том, как мозг обрабатывает информацию.
Первая обучаемая нейронная сеть, Персептрон, была продемонстрирована психологом Корнельского университета Фрэнком Розенблаттом в 1957 году.Дизайн персептрона был очень похож на дизайн современной нейронной сети, за исключением того, что он имел только один слой с регулируемыми весами и порогами, зажатый между входным и выходным слоями.
Персептроны были активной областью исследований как в психологии, так и в молодой дисциплине информатики до 1959 года, когда Мински и Паперт опубликовали книгу под названием «Персептроны», которая продемонстрировала, что выполнение некоторых довольно распространенных вычислений на персептронах будет непрактично трудоемким.
«Конечно, все эти ограничения как бы исчезают, если вы возьмете немного более сложное оборудование, например, двухуровневое», — говорит Поджио. Но в то время книга оказала сдерживающее влияние на исследования нейронных сетей.
«Вы должны поместить эти вещи в исторический контекст», — говорит Поджио. «Они выступали за программирование — для таких языков, как Lisp. Не так давно люди все еще использовали аналоговые компьютеры. В то время было совершенно неясно, что программирование — это правильный путь.Думаю, они немного переборщили, но, как обычно, это не черно-белое изображение. Если вы думаете об этом как об этой конкуренции между аналоговыми вычислениями и цифровыми вычислениями, они боролись за то, что в то время было правильным ».
Периодичность
Однако к 1980-м годам исследователи разработали алгоритмы для изменения весов и пороговых значений нейронных сетей, которые были достаточно эффективными для сетей с более чем одним слоем, устранив многие ограничения, указанные Мински и Папертом.Поле пережило ренессанс.
Но интеллектуально в нейронных сетях есть что-то неудовлетворительное. Достаточное обучение может изменить настройки сети до такой степени, что она сможет с пользой классифицировать данные, но что означают эти настройки? На какие особенности изображения смотрит распознаватель объектов и как он объединяет их в отличительные визуальные подписи автомобилей, домов и кофейных чашек? Глядя на веса отдельных связей, мы не ответим на этот вопрос.
В последние годы компьютерные ученые начали придумывать гениальные методы для вывода аналитических стратегий, используемых нейронными сетями.Но в 80-е годы стратегии сетей было невозможно расшифровать. Поэтому на рубеже веков нейронные сети были вытеснены машинами опорных векторов — альтернативным подходом к машинному обучению, основанным на очень чистой и элегантной математике.
Недавнее возрождение нейронных сетей — революция глубокого обучения — произошло благодаря индустрии компьютерных игр. Сложные изображения и быстрый темп современных видеоигр требуют оборудования, способного не отставать, и результатом стал графический процессор (GPU), который объединяет тысячи относительно простых процессорных ядер на одном чипе.Исследователям не потребовалось много времени, чтобы понять, что архитектура графического процессора удивительно похожа на архитектуру нейронной сети.
Современные графические процессоры позволили однослойным сетям 1960-х годов и двух- или трехуровневым сетям 1980-х годов превратиться в современные 10-, 15- и даже 50-уровневые сети. Это то, что означает «глубокое обучение» в «глубоком обучении» — глубина слоев сети. И в настоящее время глубокое обучение отвечает за самые эффективные системы почти во всех областях исследований искусственного интеллекта.
Под капотом
Непрозрачность сетей по-прежнему беспокоит теоретиков, но и в этом направлении есть успехи. Помимо руководства Центром мозга, разума и машин (CBMM), Поджио возглавляет исследовательскую программу центра в области теоретических основ интеллекта. Недавно Поджио и его коллеги из CBMM опубликовали теоретическое исследование нейронных сетей, состоящее из трех частей.
В первой части, опубликованной в прошлом месяце в International Journal of Automation and Computing , рассматривается диапазон вычислений, которые могут выполнять сети с глубоким обучением, и когда глубокие сети предлагают преимущества перед более мелкими.Вторая и третья части, выпущенные в виде технических отчетов CBMM, посвящены проблемам глобальной оптимизации или гарантии того, что сеть нашла настройки, которые наилучшим образом соответствуют ее обучающим данным, и переобучению, или случаям, в которых сеть становится настроенной таким образом. к особенностям его обучающих данных, которые он не может обобщить на другие экземпляры тех же категорий.
Есть еще множество теоретических вопросов, на которые нужно ответить, но работа исследователей CBMM может помочь гарантировать, что нейронные сети наконец разорвут цикл поколений, который приводил их в популярность и выходил из нее на протяжении семи десятилетий.
Как работают нейронные сети — простое введение
Криса Вудфорда. Последнее изменение: 17 июня 2020 г.
Что лучше — компьютер или мозг? Спросите большинство людей, хотят ли они такого мозга, как компьютер, и они, вероятно, ухватятся за этот шанс. Но посмотрите, какую работу вели ученые за последние пару десятилетий, и вы обнаружите, что многие из них изо всех сил пытались сделать свои компьютеры более похожими на мозг! Как? С помощью нейронных сетей — компьютерные программы, собранные из сотен, тысяч или миллионов искусственных клеток мозга, которые обучаются и ведут себя очень похоже на человеческий мозг.Что такое нейронные сети? Как они работают? Давайте посмотрим внимательнее!
Фото: У компьютеров и мозга много общего, но по сути они очень разные. Что произойдет, если объединить лучшее из обоих миров — систематическую мощь компьютера и тесно связанные между собой клетки мозга? Вы получаете великолепно полезную нейронную сеть.
Чем мозг отличается от компьютера
Вы часто слышите, как люди сравнивают человеческий мозг и электронный компьютер, и, на первый взгляд, у них есть общие черты.Типичный мозг содержит около 100 миллиардов крохотных клеток, называемых нейронами (никто не знает точно, сколько их, и по оценкам от примерно 50 миллиардов до целых 500 миллиардов) [1]. Каждый нейрон состоит из тела клетки (центральная масса клетки) с рядом исходящих от него соединений: многочисленные дендриты (входы клетки — несущие информацию к телу клетки) и единственный аксон (вывод клетки — уносит информацию).Нейроны настолько крошечные, что вы можете упаковать около 100 их клеточных тел в один миллиметр. (Также стоит отметить, вкратце мимоходом, что нейроны составляют только 10-50 процентов всех клеток в головном мозге; остальные — глиальные клетки, также называемые нейроглией, которые поддерживают и защищают нейроны и подпитывают их энергией, позволяющей чтобы работать и расти.) [1] Внутри компьютера клетка мозга эквивалентна клетке.
наноскопически крошечное коммутационное устройство, называемое транзистором. Новейшие передовые микропроцессоры (однокристальные компьютеры) содержат более 30 миллиардов транзисторов; даже базовый микропроцессор Pentium
примерно 20 лет назад было около 50 миллионов транзисторов, все упакованные на интегральную схему площадью всего 25 мм (меньше почтовой марки)! [2]
Изображение: Нейрон: основная структура клетки мозга, показывающая центральное тело клетки, дендриты (ведущие в тело клетки) и аксон (ведущие от него).
Здесь начинается и заканчивается сравнение компьютеров и мозга, потому что это совершенно разные вещи. Дело не только в том, что компьютеры — это холодные металлические коробки, набитые двоичными числами, а мозг теплый, живой, а вещи наполнены мыслями, чувствами и воспоминаниями. Настоящая разница в том, что компьютеры и мозг «думают» совершенно по-разному. В
Транзисторы в компьютере соединены в относительно простые последовательные цепи (каждый из них связан, может быть, с двумя или тремя другими в базовых схемах, известных как логические вентили), тогда как нейроны в мозге плотно взаимосвязаны сложными параллельными способами (каждый из них подключен к примерно 10 000 своих соседей).[3]
Это существенное структурное различие между компьютерами (возможно, с несколькими сотнями миллионов транзисторов, подключенных относительно простым способом) и мозгом (возможно, в 10–100 раз больше клеток мозга, соединенных более богатыми и более сложными способами) — вот что заставляет их «думать» так по-разному. . Компьютеры идеально подходят для хранения огромного количества бессмысленной (для них) информации и преобразования ее любым количеством способов в соответствии с точными инструкциями (программами), которые мы им заранее вводим.Мозг, с другой стороны, учится медленно, более окольными методами, часто на то, чтобы полностью понять что-то действительно сложное, уходят месяцы или годы. Но, в отличие от компьютеров, они могут спонтанно объединять информацию поразительными новыми способами — вот откуда исходит человеческое творчество Бетховена или Шекспира — распознавая оригинальные шаблоны, налаживая связи и видя то, чему они научились, в совершенно ином свете. .
Разве не было бы замечательно, если бы компьютеры были больше похожи на мозг? Вот тут и пригодятся нейронные сети!
Фото: Электронный мозг? Не совсем.Компьютерные микросхемы состоят из тысяч, миллионов, а иногда и миллиардов крошечных электронных переключателей, называемых транзисторами. Звучит много, но их по-прежнему намного меньше, чем клеток в человеческом мозгу.
Что такое нейронная сеть?
Основная идея нейронной сети состоит в том, чтобы моделировать (копировать упрощенным, но достаточно точным образом) множество плотно связанных между собой клеток мозга внутри компьютера, чтобы вы могли научить его, распознавать закономерности и принимать решения по-человечески.Самое удивительное в нейронной сети то, что вам не нужно программировать ее для явного обучения: она обучается сама по себе, как мозг!
Но это не мозг. Важно отметить, что нейронные сети (как правило) представляют собой моделирование программного обеспечения: они создаются путем программирования очень обычных компьютеров, работающих очень традиционным образом со своими обычными транзисторами и последовательно подключенными логическими вентилями, чтобы вести себя так, как будто они построены из миллиардов тесно связанных между собой клеток мозга, работающих параллельно.Никто еще не пытался построить компьютер, соединив транзисторы в плотно параллельную структуру, точно такую же, как человеческий мозг. Другими словами, нейронная сеть отличается от человеческого мозга точно так же, как компьютерная модель погоды отличается от настоящих облаков, снежинок или солнечного света. Компьютерное моделирование — это просто набор алгебраических переменных и математических уравнений, связывающих их вместе (другими словами, числа, хранящиеся в ячейках, значения которых постоянно меняются). Они ничего не значат для компьютеров, внутри которых работают, — только для людей, которые их программируют.
Реальные и искусственные нейронные сети
Прежде чем мы пойдем дальше, стоит также отметить некоторый жаргон. Строго говоря, нейронные сети, созданные таким образом, называются искусственными нейронными сетями (или ИНС), чтобы отличать их от настоящих нейронных сетей (совокупностей взаимосвязанных клеток мозга), которые мы находим внутри нашего мозга. Вы также можете встретить нейронные сети, называемые такими именами, как соединительные машины (это поле также называется коннекционизмом), параллельные распределенные процессоры (PDP), мыслящие машины и т. сеть «повсюду» и всегда используют его для обозначения «искусственная нейронная сеть».«
Из чего состоит нейронная сеть?
Типичная нейронная сеть содержит от нескольких десятков до сотен, тысяч или даже миллионов искусственных нейронов, называемых
Блоки расположены в ряд слоев, каждый из которых соединяется со слоями с обеих сторон. Некоторые из них, известные как блоки ввода , предназначены для приема различных форм информации из внешнего мира, которую сеть будет пытаться узнать, распознать или обработать иным образом.Другие устройства находятся на противоположной стороне сети и сигнализируют, как она реагирует на полученную информацию; они известны как блоки вывода . Между модулями ввода и модулями вывода находится один или несколько слоев из скрытых модулей , которые вместе составляют большую часть искусственного мозга. Большинство нейронных сетей — это полностью подключенных , что означает, что каждый скрытый блок и каждый выходной блок подключены к каждому блоку в слоях с каждой стороны. Связи между одним модулем и другим представлены числом, называемым весом , которое может быть как положительным (если один модуль возбуждает другой), так и отрицательным (если один модуль подавляет или подавляет другой).Чем выше вес, тем большее влияние оказывает одно устройство на другое. (Это соответствует тому, как реальные клетки мозга запускают друг друга через крошечные промежутки, называемые синапсами.)
Фото: Полностью подключенная нейронная сеть состоит из входных блоков (красный), скрытых блоков (синий) и выходных блоков (желтый), причем все блоки подключены ко всем блокам в слоях с каждой стороны. Входы подаются слева, активируйте скрытые блоки посередине и сделайте выходы поданными справа.Сила (вес) связи между любыми двумя устройствами постепенно регулируется по мере обучения сети.
Хотя простая нейронная сеть для решения простых задач может состоять всего из трех слоев, как показано здесь, она также может состоять из множества различных слоев между входом и выходом. Такая более богатая структура называется глубокой нейронной сетью (DNN) и обычно используется для решения гораздо более сложных проблем. Теоретически DNN может сопоставлять любой тип ввода с любым типом вывода, но недостатком является то, что он требует значительно большего обучения: ему нужно «видеть» миллионы или миллиарды примеров по сравнению с, возможно, сотнями или тысячами, как в более простой сети может понадобиться.Глубокий или «неглубокий», как бы он ни был структурирован, и как бы мы ни старались проиллюстрировать это на странице, стоит еще раз напомнить себе, что нейронная сеть — это , а не , на самом деле мозг или что-то подобное. В конце концов, это куча умных математических расчетов … куча уравнений … алгоритм, если хотите. [4]
Как нейронная сеть учится?
Информация проходит через нейронную сеть двумя способами. Когда он обучается (обучается) или работает нормально (после обучения), образцы информации передаются в сеть через входные блоки, которые запускают слои скрытых блоков, а они, в свою очередь, поступают в выходные блоки.Эта общая схема называется сетью прямой связи . Не все подразделения «стреляют» все время. Каждое устройство получает входные данные от устройств слева от него, и эти входные данные умножаются на веса соединений, по которым они перемещаются. Каждое устройство суммирует все входные данные, которые оно получает таким образом, и (в простейшем типе сети), если сумма превышает определенное пороговое значение , устройство «срабатывает» и запускает устройства, к которым он подключен (те, что на его верно).
Чтобы нейронная сеть могла обучаться, должен быть задействован элемент обратной связи — точно так же, как дети учатся, когда им говорят, что они делают правильно или неправильно.Фактически, мы все постоянно пользуемся обратной связью. Вспомните, когда вы впервые научились играть в боулинг с десятью кеглями. Когда вы подбирали тяжелый мяч и катили его по аллее, ваш мозг наблюдал, как быстро мяч движется и по какой линии он следует, и отмечал, как близко вы подошли к тому, чтобы сбить кегли. В следующий раз, когда настала ваша очередь, вы вспомнили, что делали неправильно раньше, изменили свои движения соответствующим образом и, надеюсь, бросили мяч немного лучше. Итак, вы использовали обратную связь, чтобы сравнить желаемый результат с тем, что произошло на самом деле, выяснили разницу между ними и использовали это, чтобы изменить то, что вы сделали в следующий раз («Мне нужно бросить это сильнее», «Мне нужно бросить немного больше. слева: «Мне нужно отпустить позже» и т. д.).Чем больше разница между предполагаемым и фактическим исходом, тем радикальнее вы бы изменили свои ходы.
Фото: Боулинг: Вы учитесь делать такие умелые вещи с помощью нейронной сети внутри вашего мозга. Каждый раз, когда вы неправильно бросаете мяч, вы узнаете, какие поправки нужно внести в следующий раз. Фото Джона Дасбаха любезно предоставлено
ВМС США.
Нейронные сети изучают вещи точно так же, как правило, с помощью процесса обратной связи, называемого обратным распространением (иногда сокращенно «обратным распространением»).Это включает в себя сравнение выходных данных, которые производит сеть, с выходными данными, которые она должна была производить, и использование разницы между ними для изменения весов соединений между устройствами в сети, работая от выходных модулей через скрытые устройства к входным модулям. Другими словами, движение назад. Со временем обратное распространение приводит к тому, что сеть учится, уменьшая разницу между фактическим и предполагаемым выходом до точки, в которой они точно совпадают, поэтому сеть выясняет вещи именно так, как должна.
Как это работает на практике?
После того, как сеть обучена с помощью достаточного количества обучающих примеров, она достигает точки, когда вы можете представить ей совершенно новый набор входных данных, которого раньше не видели, и посмотреть, как она отреагирует. Например, предположим, что вы обучаете сеть, показывая ей множество изображений стульев и столов, представленных каким-либо подходящим образом, и сообщая ей, является ли каждый из них стулом или столом. Показав ему, скажем, 25 разных стульев и 25 разных столов, вы скармливаете ему изображение какого-то нового дизайна, которого раньше не встречали, — скажем, шезлонга, — и смотрите, что получится.В зависимости от того, как вы его обучили, он попытается классифицировать новый пример как стул или стол, обобщая на основе своего прошлого опыта — точно так же, как человек. Привет, ты научил компьютер распознавать мебель!
Это не значит, что нейронная сеть может просто «смотреть» на предметы мебели и мгновенно реагировать на них осмысленным образом; это не поведение человека. Рассмотрим только что приведенный пример: сеть на самом деле не смотрит на предметы мебели.Входы в сеть — это, по сути, двоичные числа: каждый входной блок либо включен, либо выключен. Итак, если у вас есть пять модулей ввода, вы можете ввести информацию о пяти различных характеристиках разных стульев, используя двоичные (да / нет) ответы. Вопросы могут быть такие: 1) Есть ли у него спинка? 2) Есть ли у него верх? 3) Есть ли мягкая обивка? 4) Сможете ли вы с комфортом сидеть на нем долгое время? 5) Можете ли вы положить на него много чего? Типичный стул тогда будет представлен как Да, Нет, Да, Да, Нет или 10110 в двоичном формате, в то время как типичная таблица может быть Нет, Да, Нет, Нет, Да или 01001.Итак, на этапе обучения сеть просто просматривает множество чисел, таких как 10110 и 01001, и узнает, что некоторые из них означают стул (что может быть результатом 1), а другие означают таблицу (выход 0).
Для чего используются нейронные сети?
Фото: Последние два десятилетия НАСА экспериментировало с самообучающейся нейронной сетью под названием
Интеллектуальная система управления полетом (IFCS), которая может помочь пилотам приземлить самолеты после серьезных сбоев или повреждений в бою.Прототип испытывался на этом модифицированном самолете NF-15B (родственник McDonnell Douglas F-15). Фото Джима Росса любезно предоставлено
НАСА.
На основе этого примера вы, вероятно, увидите множество различных приложений для нейронных сетей, которые включают распознавание шаблонов и принятие простых решений по ним. В самолетах вы можете использовать нейронную сеть в качестве базового автопилота с модулями ввода, считывающими сигналы от различных приборов кабины, и модулями вывода, которые соответствующим образом изменяют органы управления самолета, чтобы безопасно удерживать его на курсе.Внутри фабрики вы можете использовать нейронную сеть для контроля качества. Допустим, вы производите средство для стирки одежды с помощью гигантского запутанного химического процесса. Вы можете измерить конечное моющее средство различными способами (его цвет, кислотность, толщину и т. Д.), Ввести эти измерения в свою нейронную сеть в качестве входных данных, а затем позволить сети решить, принять или отклонить партию.
Также существует множество приложений для нейронных сетей в сфере безопасности. Предположим, у вас есть банк, в котором каждую минуту через вашу компьютерную систему проходят тысячи транзакций по кредитным картам.Вам нужен быстрый автоматизированный способ выявления любых транзакций, которые могут быть мошенническими, и для этого идеально подходит нейронная сеть. Ваши данные будут примерно такими: 1) Присутствует ли на самом деле владелец карты? 2) Был ли использован действующий ПИН-код? 3) Было ли произведено пять или более транзакций по этой карте за последние 10 минут? 4) Используется ли карта в другой стране, в которой она зарегистрирована? -и так далее.
Имея достаточное количество подсказок, нейронная сеть может помечать любые транзакции, которые выглядят подозрительно, что позволяет оператору-человеку более внимательно их исследовать.Очень похожим образом банк может использовать нейронную сеть, чтобы помочь ему решить, давать ли ссуды людям на основе их прошлой кредитной истории, текущих доходов и трудовой книжки.
Фото: Распознавание рукописного ввода на сенсорном экране, планшетный компьютер — одно из многих приложений, идеально подходящих для нейронной сети. Каждый символ (буква, цифра или символ), который вы пишете, распознается на основе ключевых характеристик, которые он содержит (вертикальные линии, горизонтальные линии, наклонные линии, кривые и т. Д.), И порядка, в котором вы их рисуете на экране. .Нейронные сети со временем распознают все лучше и лучше.
Многие вещи, которые мы делаем каждый день, включают распознавание шаблонов и их использование для принятия решений, поэтому нейронные сети могут помочь нам множеством разных способов. Они могут помочь нам прогнозировать состояние фондовой биржи или погоду, управлять системами радиолокационного сканирования, которые автоматически идентифицируют вражеские самолеты или корабли, и даже помогать врачам диагностировать сложные заболевания на основе их симптомов. Прямо в эту минуту внутри вашего компьютера или мобильного телефона могут работать нейронные сети.Если вы используете приложения для мобильных телефонов, которые распознают ваш почерк на сенсорном экране, они могут использовать простую нейронную сеть, чтобы выяснить, какие символы вы пишете, ища отличительные особенности в отметках, которые вы делаете пальцами (и в каком порядке вы их делаете). Некоторые виды программного обеспечения для распознавания голоса также используют нейронные сети. То же самое и с некоторыми почтовыми программами, которые автоматически различают подлинные электронные письма и спам.
Нейронные сети даже доказали свою эффективность при переводе текста с одного языка на другой.
Автоматический перевод Google, например, за последние несколько лет все шире использует эту технологию для преобразования слов на одном языке (вход сети) в эквивалентные слова на другом языке (выход сети). В 2016 году Google
объявил, что использует то, что называется нейронным машинным переводом (NMT), для мгновенного преобразования целых предложений с
Снижение ошибок на 55–85%. Это всего лишь один пример того, как Google разворачивает технологию нейронных сетей: Google Brain.
так называется масштабное исследование, которое применяет нейронные методы ко всему спектру продуктов, включая
его поисковая система.Он также использует глубокие нейронные сети для поддержки рекомендаций, которые вы видите на YouTube, с моделями, которые «узнают приблизительно
один миллиард параметров и обучены на сотнях миллиардов примеров »[5]
В общем, нейронные сети сделали компьютерные системы более полезными, сделав их более человечными. Так что в следующий раз, когда вам захочется, чтобы ваш мозг был таким же надежным, как компьютер, подумайте еще раз — и будьте благодарны, что в вашей голове уже установлена такая превосходная нейронная сеть!
Как работают нейронные сети — простое введение
Криса Вудфорда.Последнее изменение: 17 июня 2020 г.
Что лучше — компьютер или мозг? Спросите большинство людей, хотят ли они такого мозга, как компьютер, и они, вероятно, ухватятся за этот шанс. Но посмотрите, какую работу вели ученые за последние пару десятилетий, и вы обнаружите, что многие из них изо всех сил пытались сделать свои компьютеры более похожими на мозг! Как? С помощью нейронных сетей — компьютерные программы, собранные из сотен, тысяч или миллионов искусственных клеток мозга, которые обучаются и ведут себя очень похоже на человеческий мозг.Что такое нейронные сети? Как они работают? Давайте посмотрим внимательнее!
Фото: У компьютеров и мозга много общего, но по сути они очень разные. Что произойдет, если объединить лучшее из обоих миров — систематическую мощь компьютера и тесно связанные между собой клетки мозга? Вы получаете великолепно полезную нейронную сеть.
Чем мозг отличается от компьютера
Вы часто слышите, как люди сравнивают человеческий мозг и электронный компьютер, и, на первый взгляд, у них есть общие черты.Типичный мозг содержит около 100 миллиардов крохотных клеток, называемых нейронами (никто не знает точно, сколько их, и по оценкам от примерно 50 миллиардов до целых 500 миллиардов) [1]. Каждый нейрон состоит из тела клетки (центральная масса клетки) с рядом исходящих от него соединений: многочисленные дендриты (входы клетки — несущие информацию к телу клетки) и единственный аксон (вывод клетки — уносит информацию).Нейроны настолько крошечные, что вы можете упаковать около 100 их клеточных тел в один миллиметр. (Также стоит отметить, вкратце мимоходом, что нейроны составляют только 10-50 процентов всех клеток в головном мозге; остальные — глиальные клетки, также называемые нейроглией, которые поддерживают и защищают нейроны и подпитывают их энергией, позволяющей чтобы работать и расти.) [1] Внутри компьютера клетка мозга эквивалентна клетке.
наноскопически крошечное коммутационное устройство, называемое транзистором. Новейшие передовые микропроцессоры (однокристальные компьютеры) содержат более 30 миллиардов транзисторов; даже базовый микропроцессор Pentium
примерно 20 лет назад было около 50 миллионов транзисторов, все упакованные на интегральную схему площадью всего 25 мм (меньше почтовой марки)! [2]
Изображение: Нейрон: основная структура клетки мозга, показывающая центральное тело клетки, дендриты (ведущие в тело клетки) и аксон (ведущие от него).
Здесь начинается и заканчивается сравнение компьютеров и мозга, потому что это совершенно разные вещи. Дело не только в том, что компьютеры — это холодные металлические коробки, набитые двоичными числами, а мозг теплый, живой, а вещи наполнены мыслями, чувствами и воспоминаниями. Настоящая разница в том, что компьютеры и мозг «думают» совершенно по-разному. В
Транзисторы в компьютере соединены в относительно простые последовательные цепи (каждый из них связан, может быть, с двумя или тремя другими в базовых схемах, известных как логические вентили), тогда как нейроны в мозге плотно взаимосвязаны сложными параллельными способами (каждый из них подключен к примерно 10 000 своих соседей).[3]
Это существенное структурное различие между компьютерами (возможно, с несколькими сотнями миллионов транзисторов, подключенных относительно простым способом) и мозгом (возможно, в 10–100 раз больше клеток мозга, соединенных более богатыми и более сложными способами) — вот что заставляет их «думать» так по-разному. . Компьютеры идеально подходят для хранения огромного количества бессмысленной (для них) информации и преобразования ее любым количеством способов в соответствии с точными инструкциями (программами), которые мы им заранее вводим.Мозг, с другой стороны, учится медленно, более окольными методами, часто на то, чтобы полностью понять что-то действительно сложное, уходят месяцы или годы. Но, в отличие от компьютеров, они могут спонтанно объединять информацию поразительными новыми способами — вот откуда исходит человеческое творчество Бетховена или Шекспира — распознавая оригинальные шаблоны, налаживая связи и видя то, чему они научились, в совершенно ином свете. .
Разве не было бы замечательно, если бы компьютеры были больше похожи на мозг? Вот тут и пригодятся нейронные сети!
Фото: Электронный мозг? Не совсем.Компьютерные микросхемы состоят из тысяч, миллионов, а иногда и миллиардов крошечных электронных переключателей, называемых транзисторами. Звучит много, но их по-прежнему намного меньше, чем клеток в человеческом мозгу.
Что такое нейронная сеть?
Основная идея нейронной сети состоит в том, чтобы моделировать (копировать упрощенным, но достаточно точным образом) множество плотно связанных между собой клеток мозга внутри компьютера, чтобы вы могли научить его, распознавать закономерности и принимать решения по-человечески.Самое удивительное в нейронной сети то, что вам не нужно программировать ее для явного обучения: она обучается сама по себе, как мозг!
Но это не мозг. Важно отметить, что нейронные сети (как правило) представляют собой моделирование программного обеспечения: они создаются путем программирования очень обычных компьютеров, работающих очень традиционным образом со своими обычными транзисторами и последовательно подключенными логическими вентилями, чтобы вести себя так, как будто они построены из миллиардов тесно связанных между собой клеток мозга, работающих параллельно.Никто еще не пытался построить компьютер, соединив транзисторы в плотно параллельную структуру, точно такую же, как человеческий мозг. Другими словами, нейронная сеть отличается от человеческого мозга точно так же, как компьютерная модель погоды отличается от настоящих облаков, снежинок или солнечного света. Компьютерное моделирование — это просто набор алгебраических переменных и математических уравнений, связывающих их вместе (другими словами, числа, хранящиеся в ячейках, значения которых постоянно меняются). Они ничего не значат для компьютеров, внутри которых работают, — только для людей, которые их программируют.
Реальные и искусственные нейронные сети
Прежде чем мы пойдем дальше, стоит также отметить некоторый жаргон. Строго говоря, нейронные сети, созданные таким образом, называются искусственными нейронными сетями (или ИНС), чтобы отличать их от настоящих нейронных сетей (совокупностей взаимосвязанных клеток мозга), которые мы находим внутри нашего мозга. Вы также можете встретить нейронные сети, называемые такими именами, как соединительные машины (это поле также называется коннекционизмом), параллельные распределенные процессоры (PDP), мыслящие машины и т. сеть «повсюду» и всегда используют его для обозначения «искусственная нейронная сеть».«
Из чего состоит нейронная сеть?
Типичная нейронная сеть содержит от нескольких десятков до сотен, тысяч или даже миллионов искусственных нейронов, называемых
Блоки расположены в ряд слоев, каждый из которых соединяется со слоями с обеих сторон. Некоторые из них, известные как блоки ввода , предназначены для приема различных форм информации из внешнего мира, которую сеть будет пытаться узнать, распознать или обработать иным образом.Другие устройства находятся на противоположной стороне сети и сигнализируют, как она реагирует на полученную информацию; они известны как блоки вывода . Между модулями ввода и модулями вывода находится один или несколько слоев из скрытых модулей , которые вместе составляют большую часть искусственного мозга. Большинство нейронных сетей — это полностью подключенных , что означает, что каждый скрытый блок и каждый выходной блок подключены к каждому блоку в слоях с каждой стороны. Связи между одним модулем и другим представлены числом, называемым весом , которое может быть как положительным (если один модуль возбуждает другой), так и отрицательным (если один модуль подавляет или подавляет другой).Чем выше вес, тем большее влияние оказывает одно устройство на другое. (Это соответствует тому, как реальные клетки мозга запускают друг друга через крошечные промежутки, называемые синапсами.)
Фото: Полностью подключенная нейронная сеть состоит из входных блоков (красный), скрытых блоков (синий) и выходных блоков (желтый), причем все блоки подключены ко всем блокам в слоях с каждой стороны. Входы подаются слева, активируйте скрытые блоки посередине и сделайте выходы поданными справа.Сила (вес) связи между любыми двумя устройствами постепенно регулируется по мере обучения сети.
Хотя простая нейронная сеть для решения простых задач может состоять всего из трех слоев, как показано здесь, она также может состоять из множества различных слоев между входом и выходом. Такая более богатая структура называется глубокой нейронной сетью (DNN) и обычно используется для решения гораздо более сложных проблем. Теоретически DNN может сопоставлять любой тип ввода с любым типом вывода, но недостатком является то, что он требует значительно большего обучения: ему нужно «видеть» миллионы или миллиарды примеров по сравнению с, возможно, сотнями или тысячами, как в более простой сети может понадобиться.Глубокий или «неглубокий», как бы он ни был структурирован, и как бы мы ни старались проиллюстрировать это на странице, стоит еще раз напомнить себе, что нейронная сеть — это , а не , на самом деле мозг или что-то подобное. В конце концов, это куча умных математических расчетов … куча уравнений … алгоритм, если хотите. [4]
Как нейронная сеть учится?
Информация проходит через нейронную сеть двумя способами. Когда он обучается (обучается) или работает нормально (после обучения), образцы информации передаются в сеть через входные блоки, которые запускают слои скрытых блоков, а они, в свою очередь, поступают в выходные блоки.Эта общая схема называется сетью прямой связи . Не все подразделения «стреляют» все время. Каждое устройство получает входные данные от устройств слева от него, и эти входные данные умножаются на веса соединений, по которым они перемещаются. Каждое устройство суммирует все входные данные, которые оно получает таким образом, и (в простейшем типе сети), если сумма превышает определенное пороговое значение , устройство «срабатывает» и запускает устройства, к которым он подключен (те, что на его верно).
Чтобы нейронная сеть могла обучаться, должен быть задействован элемент обратной связи — точно так же, как дети учатся, когда им говорят, что они делают правильно или неправильно.Фактически, мы все постоянно пользуемся обратной связью. Вспомните, когда вы впервые научились играть в боулинг с десятью кеглями. Когда вы подбирали тяжелый мяч и катили его по аллее, ваш мозг наблюдал, как быстро мяч движется и по какой линии он следует, и отмечал, как близко вы подошли к тому, чтобы сбить кегли. В следующий раз, когда настала ваша очередь, вы вспомнили, что делали неправильно раньше, изменили свои движения соответствующим образом и, надеюсь, бросили мяч немного лучше. Итак, вы использовали обратную связь, чтобы сравнить желаемый результат с тем, что произошло на самом деле, выяснили разницу между ними и использовали это, чтобы изменить то, что вы сделали в следующий раз («Мне нужно бросить это сильнее», «Мне нужно бросить немного больше. слева: «Мне нужно отпустить позже» и т. д.).Чем больше разница между предполагаемым и фактическим исходом, тем радикальнее вы бы изменили свои ходы.
Фото: Боулинг: Вы учитесь делать такие умелые вещи с помощью нейронной сети внутри вашего мозга. Каждый раз, когда вы неправильно бросаете мяч, вы узнаете, какие поправки нужно внести в следующий раз. Фото Джона Дасбаха любезно предоставлено
ВМС США.
Нейронные сети изучают вещи точно так же, как правило, с помощью процесса обратной связи, называемого обратным распространением (иногда сокращенно «обратным распространением»).Это включает в себя сравнение выходных данных, которые производит сеть, с выходными данными, которые она должна была производить, и использование разницы между ними для изменения весов соединений между устройствами в сети, работая от выходных модулей через скрытые устройства к входным модулям. Другими словами, движение назад. Со временем обратное распространение приводит к тому, что сеть учится, уменьшая разницу между фактическим и предполагаемым выходом до точки, в которой они точно совпадают, поэтому сеть выясняет вещи именно так, как должна.
Как это работает на практике?
После того, как сеть обучена с помощью достаточного количества обучающих примеров, она достигает точки, когда вы можете представить ей совершенно новый набор входных данных, которого раньше не видели, и посмотреть, как она отреагирует. Например, предположим, что вы обучаете сеть, показывая ей множество изображений стульев и столов, представленных каким-либо подходящим образом, и сообщая ей, является ли каждый из них стулом или столом. Показав ему, скажем, 25 разных стульев и 25 разных столов, вы скармливаете ему изображение какого-то нового дизайна, которого раньше не встречали, — скажем, шезлонга, — и смотрите, что получится.В зависимости от того, как вы его обучили, он попытается классифицировать новый пример как стул или стол, обобщая на основе своего прошлого опыта — точно так же, как человек. Привет, ты научил компьютер распознавать мебель!
Это не значит, что нейронная сеть может просто «смотреть» на предметы мебели и мгновенно реагировать на них осмысленным образом; это не поведение человека. Рассмотрим только что приведенный пример: сеть на самом деле не смотрит на предметы мебели.Входы в сеть — это, по сути, двоичные числа: каждый входной блок либо включен, либо выключен. Итак, если у вас есть пять модулей ввода, вы можете ввести информацию о пяти различных характеристиках разных стульев, используя двоичные (да / нет) ответы. Вопросы могут быть такие: 1) Есть ли у него спинка? 2) Есть ли у него верх? 3) Есть ли мягкая обивка? 4) Сможете ли вы с комфортом сидеть на нем долгое время? 5) Можете ли вы положить на него много чего? Типичный стул тогда будет представлен как Да, Нет, Да, Да, Нет или 10110 в двоичном формате, в то время как типичная таблица может быть Нет, Да, Нет, Нет, Да или 01001.Итак, на этапе обучения сеть просто просматривает множество чисел, таких как 10110 и 01001, и узнает, что некоторые из них означают стул (что может быть результатом 1), а другие означают таблицу (выход 0).
Для чего используются нейронные сети?
Фото: Последние два десятилетия НАСА экспериментировало с самообучающейся нейронной сетью под названием
Интеллектуальная система управления полетом (IFCS), которая может помочь пилотам приземлить самолеты после серьезных сбоев или повреждений в бою.Прототип испытывался на этом модифицированном самолете NF-15B (родственник McDonnell Douglas F-15). Фото Джима Росса любезно предоставлено
НАСА.
На основе этого примера вы, вероятно, увидите множество различных приложений для нейронных сетей, которые включают распознавание шаблонов и принятие простых решений по ним. В самолетах вы можете использовать нейронную сеть в качестве базового автопилота с модулями ввода, считывающими сигналы от различных приборов кабины, и модулями вывода, которые соответствующим образом изменяют органы управления самолета, чтобы безопасно удерживать его на курсе.Внутри фабрики вы можете использовать нейронную сеть для контроля качества. Допустим, вы производите средство для стирки одежды с помощью гигантского запутанного химического процесса. Вы можете измерить конечное моющее средство различными способами (его цвет, кислотность, толщину и т. Д.), Ввести эти измерения в свою нейронную сеть в качестве входных данных, а затем позволить сети решить, принять или отклонить партию.
Также существует множество приложений для нейронных сетей в сфере безопасности. Предположим, у вас есть банк, в котором каждую минуту через вашу компьютерную систему проходят тысячи транзакций по кредитным картам.Вам нужен быстрый автоматизированный способ выявления любых транзакций, которые могут быть мошенническими, и для этого идеально подходит нейронная сеть. Ваши данные будут примерно такими: 1) Присутствует ли на самом деле владелец карты? 2) Был ли использован действующий ПИН-код? 3) Было ли произведено пять или более транзакций по этой карте за последние 10 минут? 4) Используется ли карта в другой стране, в которой она зарегистрирована? -и так далее.
Имея достаточное количество подсказок, нейронная сеть может помечать любые транзакции, которые выглядят подозрительно, что позволяет оператору-человеку более внимательно их исследовать.Очень похожим образом банк может использовать нейронную сеть, чтобы помочь ему решить, давать ли ссуды людям на основе их прошлой кредитной истории, текущих доходов и трудовой книжки.
Фото: Распознавание рукописного ввода на сенсорном экране, планшетный компьютер — одно из многих приложений, идеально подходящих для нейронной сети. Каждый символ (буква, цифра или символ), который вы пишете, распознается на основе ключевых характеристик, которые он содержит (вертикальные линии, горизонтальные линии, наклонные линии, кривые и т. Д.), И порядка, в котором вы их рисуете на экране. .Нейронные сети со временем распознают все лучше и лучше.
Многие вещи, которые мы делаем каждый день, включают распознавание шаблонов и их использование для принятия решений, поэтому нейронные сети могут помочь нам множеством разных способов. Они могут помочь нам прогнозировать состояние фондовой биржи или погоду, управлять системами радиолокационного сканирования, которые автоматически идентифицируют вражеские самолеты или корабли, и даже помогать врачам диагностировать сложные заболевания на основе их симптомов. Прямо в эту минуту внутри вашего компьютера или мобильного телефона могут работать нейронные сети.Если вы используете приложения для мобильных телефонов, которые распознают ваш почерк на сенсорном экране, они могут использовать простую нейронную сеть, чтобы выяснить, какие символы вы пишете, ища отличительные особенности в отметках, которые вы делаете пальцами (и в каком порядке вы их делаете). Некоторые виды программного обеспечения для распознавания голоса также используют нейронные сети. То же самое и с некоторыми почтовыми программами, которые автоматически различают подлинные электронные письма и спам.
Нейронные сети даже доказали свою эффективность при переводе текста с одного языка на другой.
Автоматический перевод Google, например, за последние несколько лет все шире использует эту технологию для преобразования слов на одном языке (вход сети) в эквивалентные слова на другом языке (выход сети). В 2016 году Google
объявил, что использует то, что называется нейронным машинным переводом (NMT), для мгновенного преобразования целых предложений с
Снижение ошибок на 55–85%. Это всего лишь один пример того, как Google разворачивает технологию нейронных сетей: Google Brain.
так называется масштабное исследование, которое применяет нейронные методы ко всему спектру продуктов, включая
его поисковая система.Он также использует глубокие нейронные сети для поддержки рекомендаций, которые вы видите на YouTube, с моделями, которые «узнают приблизительно
один миллиард параметров и обучены на сотнях миллиардов примеров »[5]
В общем, нейронные сети сделали компьютерные системы более полезными, сделав их более человечными. Так что в следующий раз, когда вам захочется, чтобы ваш мозг был таким же надежным, как компьютер, подумайте еще раз — и будьте благодарны, что в вашей голове уже установлена такая превосходная нейронная сеть!
Как работают нейронные сети — простое введение
Криса Вудфорда.Последнее изменение: 17 июня 2020 г.
Что лучше — компьютер или мозг? Спросите большинство людей, хотят ли они такого мозга, как компьютер, и они, вероятно, ухватятся за этот шанс. Но посмотрите, какую работу вели ученые за последние пару десятилетий, и вы обнаружите, что многие из них изо всех сил пытались сделать свои компьютеры более похожими на мозг! Как? С помощью нейронных сетей — компьютерные программы, собранные из сотен, тысяч или миллионов искусственных клеток мозга, которые обучаются и ведут себя очень похоже на человеческий мозг.Что такое нейронные сети? Как они работают? Давайте посмотрим внимательнее!
Фото: У компьютеров и мозга много общего, но по сути они очень разные. Что произойдет, если объединить лучшее из обоих миров — систематическую мощь компьютера и тесно связанные между собой клетки мозга? Вы получаете великолепно полезную нейронную сеть.
Чем мозг отличается от компьютера
Вы часто слышите, как люди сравнивают человеческий мозг и электронный компьютер, и, на первый взгляд, у них есть общие черты.Типичный мозг содержит около 100 миллиардов крохотных клеток, называемых нейронами (никто не знает точно, сколько их, и по оценкам от примерно 50 миллиардов до целых 500 миллиардов) [1]. Каждый нейрон состоит из тела клетки (центральная масса клетки) с рядом исходящих от него соединений: многочисленные дендриты (входы клетки — несущие информацию к телу клетки) и единственный аксон (вывод клетки — уносит информацию).Нейроны настолько крошечные, что вы можете упаковать около 100 их клеточных тел в один миллиметр. (Также стоит отметить, вкратце мимоходом, что нейроны составляют только 10-50 процентов всех клеток в головном мозге; остальные — глиальные клетки, также называемые нейроглией, которые поддерживают и защищают нейроны и подпитывают их энергией, позволяющей чтобы работать и расти.) [1] Внутри компьютера клетка мозга эквивалентна клетке.
наноскопически крошечное коммутационное устройство, называемое транзистором. Новейшие передовые микропроцессоры (однокристальные компьютеры) содержат более 30 миллиардов транзисторов; даже базовый микропроцессор Pentium
примерно 20 лет назад было около 50 миллионов транзисторов, все упакованные на интегральную схему площадью всего 25 мм (меньше почтовой марки)! [2]
Изображение: Нейрон: основная структура клетки мозга, показывающая центральное тело клетки, дендриты (ведущие в тело клетки) и аксон (ведущие от него).
Здесь начинается и заканчивается сравнение компьютеров и мозга, потому что это совершенно разные вещи. Дело не только в том, что компьютеры — это холодные металлические коробки, набитые двоичными числами, а мозг теплый, живой, а вещи наполнены мыслями, чувствами и воспоминаниями. Настоящая разница в том, что компьютеры и мозг «думают» совершенно по-разному. В
Транзисторы в компьютере соединены в относительно простые последовательные цепи (каждый из них связан, может быть, с двумя или тремя другими в базовых схемах, известных как логические вентили), тогда как нейроны в мозге плотно взаимосвязаны сложными параллельными способами (каждый из них подключен к примерно 10 000 своих соседей).[3]
Это существенное структурное различие между компьютерами (возможно, с несколькими сотнями миллионов транзисторов, подключенных относительно простым способом) и мозгом (возможно, в 10–100 раз больше клеток мозга, соединенных более богатыми и более сложными способами) — вот что заставляет их «думать» так по-разному. . Компьютеры идеально подходят для хранения огромного количества бессмысленной (для них) информации и преобразования ее любым количеством способов в соответствии с точными инструкциями (программами), которые мы им заранее вводим.Мозг, с другой стороны, учится медленно, более окольными методами, часто на то, чтобы полностью понять что-то действительно сложное, уходят месяцы или годы. Но, в отличие от компьютеров, они могут спонтанно объединять информацию поразительными новыми способами — вот откуда исходит человеческое творчество Бетховена или Шекспира — распознавая оригинальные шаблоны, налаживая связи и видя то, чему они научились, в совершенно ином свете. .
Разве не было бы замечательно, если бы компьютеры были больше похожи на мозг? Вот тут и пригодятся нейронные сети!
Фото: Электронный мозг? Не совсем.Компьютерные микросхемы состоят из тысяч, миллионов, а иногда и миллиардов крошечных электронных переключателей, называемых транзисторами. Звучит много, но их по-прежнему намного меньше, чем клеток в человеческом мозгу.
Что такое нейронная сеть?
Основная идея нейронной сети состоит в том, чтобы моделировать (копировать упрощенным, но достаточно точным образом) множество плотно связанных между собой клеток мозга внутри компьютера, чтобы вы могли научить его, распознавать закономерности и принимать решения по-человечески.Самое удивительное в нейронной сети то, что вам не нужно программировать ее для явного обучения: она обучается сама по себе, как мозг!
Но это не мозг. Важно отметить, что нейронные сети (как правило) представляют собой моделирование программного обеспечения: они создаются путем программирования очень обычных компьютеров, работающих очень традиционным образом со своими обычными транзисторами и последовательно подключенными логическими вентилями, чтобы вести себя так, как будто они построены из миллиардов тесно связанных между собой клеток мозга, работающих параллельно.Никто еще не пытался построить компьютер, соединив транзисторы в плотно параллельную структуру, точно такую же, как человеческий мозг. Другими словами, нейронная сеть отличается от человеческого мозга точно так же, как компьютерная модель погоды отличается от настоящих облаков, снежинок или солнечного света. Компьютерное моделирование — это просто набор алгебраических переменных и математических уравнений, связывающих их вместе (другими словами, числа, хранящиеся в ячейках, значения которых постоянно меняются). Они ничего не значат для компьютеров, внутри которых работают, — только для людей, которые их программируют.
Реальные и искусственные нейронные сети
Прежде чем мы пойдем дальше, стоит также отметить некоторый жаргон. Строго говоря, нейронные сети, созданные таким образом, называются искусственными нейронными сетями (или ИНС), чтобы отличать их от настоящих нейронных сетей (совокупностей взаимосвязанных клеток мозга), которые мы находим внутри нашего мозга. Вы также можете встретить нейронные сети, называемые такими именами, как соединительные машины (это поле также называется коннекционизмом), параллельные распределенные процессоры (PDP), мыслящие машины и т. сеть «повсюду» и всегда используют его для обозначения «искусственная нейронная сеть».«
Из чего состоит нейронная сеть?
Типичная нейронная сеть содержит от нескольких десятков до сотен, тысяч или даже миллионов искусственных нейронов, называемых
Блоки расположены в ряд слоев, каждый из которых соединяется со слоями с обеих сторон. Некоторые из них, известные как блоки ввода , предназначены для приема различных форм информации из внешнего мира, которую сеть будет пытаться узнать, распознать или обработать иным образом.Другие устройства находятся на противоположной стороне сети и сигнализируют, как она реагирует на полученную информацию; они известны как блоки вывода . Между модулями ввода и модулями вывода находится один или несколько слоев из скрытых модулей , которые вместе составляют большую часть искусственного мозга. Большинство нейронных сетей — это полностью подключенных , что означает, что каждый скрытый блок и каждый выходной блок подключены к каждому блоку в слоях с каждой стороны. Связи между одним модулем и другим представлены числом, называемым весом , которое может быть как положительным (если один модуль возбуждает другой), так и отрицательным (если один модуль подавляет или подавляет другой).Чем выше вес, тем большее влияние оказывает одно устройство на другое. (Это соответствует тому, как реальные клетки мозга запускают друг друга через крошечные промежутки, называемые синапсами.)
Фото: Полностью подключенная нейронная сеть состоит из входных блоков (красный), скрытых блоков (синий) и выходных блоков (желтый), причем все блоки подключены ко всем блокам в слоях с каждой стороны. Входы подаются слева, активируйте скрытые блоки посередине и сделайте выходы поданными справа.Сила (вес) связи между любыми двумя устройствами постепенно регулируется по мере обучения сети.
Хотя простая нейронная сеть для решения простых задач может состоять всего из трех слоев, как показано здесь, она также может состоять из множества различных слоев между входом и выходом. Такая более богатая структура называется глубокой нейронной сетью (DNN) и обычно используется для решения гораздо более сложных проблем. Теоретически DNN может сопоставлять любой тип ввода с любым типом вывода, но недостатком является то, что он требует значительно большего обучения: ему нужно «видеть» миллионы или миллиарды примеров по сравнению с, возможно, сотнями или тысячами, как в более простой сети может понадобиться.Глубокий или «неглубокий», как бы он ни был структурирован, и как бы мы ни старались проиллюстрировать это на странице, стоит еще раз напомнить себе, что нейронная сеть — это , а не , на самом деле мозг или что-то подобное. В конце концов, это куча умных математических расчетов … куча уравнений … алгоритм, если хотите. [4]
Как нейронная сеть учится?
Информация проходит через нейронную сеть двумя способами. Когда он обучается (обучается) или работает нормально (после обучения), образцы информации передаются в сеть через входные блоки, которые запускают слои скрытых блоков, а они, в свою очередь, поступают в выходные блоки.Эта общая схема называется сетью прямой связи . Не все подразделения «стреляют» все время. Каждое устройство получает входные данные от устройств слева от него, и эти входные данные умножаются на веса соединений, по которым они перемещаются. Каждое устройство суммирует все входные данные, которые оно получает таким образом, и (в простейшем типе сети), если сумма превышает определенное пороговое значение , устройство «срабатывает» и запускает устройства, к которым он подключен (те, что на его верно).
Чтобы нейронная сеть могла обучаться, должен быть задействован элемент обратной связи — точно так же, как дети учатся, когда им говорят, что они делают правильно или неправильно.Фактически, мы все постоянно пользуемся обратной связью. Вспомните, когда вы впервые научились играть в боулинг с десятью кеглями. Когда вы подбирали тяжелый мяч и катили его по аллее, ваш мозг наблюдал, как быстро мяч движется и по какой линии он следует, и отмечал, как близко вы подошли к тому, чтобы сбить кегли. В следующий раз, когда настала ваша очередь, вы вспомнили, что делали неправильно раньше, изменили свои движения соответствующим образом и, надеюсь, бросили мяч немного лучше. Итак, вы использовали обратную связь, чтобы сравнить желаемый результат с тем, что произошло на самом деле, выяснили разницу между ними и использовали это, чтобы изменить то, что вы сделали в следующий раз («Мне нужно бросить это сильнее», «Мне нужно бросить немного больше. слева: «Мне нужно отпустить позже» и т. д.).Чем больше разница между предполагаемым и фактическим исходом, тем радикальнее вы бы изменили свои ходы.
Фото: Боулинг: Вы учитесь делать такие умелые вещи с помощью нейронной сети внутри вашего мозга. Каждый раз, когда вы неправильно бросаете мяч, вы узнаете, какие поправки нужно внести в следующий раз. Фото Джона Дасбаха любезно предоставлено
ВМС США.
Нейронные сети изучают вещи точно так же, как правило, с помощью процесса обратной связи, называемого обратным распространением (иногда сокращенно «обратным распространением»).Это включает в себя сравнение выходных данных, которые производит сеть, с выходными данными, которые она должна была производить, и использование разницы между ними для изменения весов соединений между устройствами в сети, работая от выходных модулей через скрытые устройства к входным модулям. Другими словами, движение назад. Со временем обратное распространение приводит к тому, что сеть учится, уменьшая разницу между фактическим и предполагаемым выходом до точки, в которой они точно совпадают, поэтому сеть выясняет вещи именно так, как должна.
Как это работает на практике?
После того, как сеть обучена с помощью достаточного количества обучающих примеров, она достигает точки, когда вы можете представить ей совершенно новый набор входных данных, которого раньше не видели, и посмотреть, как она отреагирует. Например, предположим, что вы обучаете сеть, показывая ей множество изображений стульев и столов, представленных каким-либо подходящим образом, и сообщая ей, является ли каждый из них стулом или столом. Показав ему, скажем, 25 разных стульев и 25 разных столов, вы скармливаете ему изображение какого-то нового дизайна, которого раньше не встречали, — скажем, шезлонга, — и смотрите, что получится.В зависимости от того, как вы его обучили, он попытается классифицировать новый пример как стул или стол, обобщая на основе своего прошлого опыта — точно так же, как человек. Привет, ты научил компьютер распознавать мебель!
Это не значит, что нейронная сеть может просто «смотреть» на предметы мебели и мгновенно реагировать на них осмысленным образом; это не поведение человека. Рассмотрим только что приведенный пример: сеть на самом деле не смотрит на предметы мебели.Входы в сеть — это, по сути, двоичные числа: каждый входной блок либо включен, либо выключен. Итак, если у вас есть пять модулей ввода, вы можете ввести информацию о пяти различных характеристиках разных стульев, используя двоичные (да / нет) ответы. Вопросы могут быть такие: 1) Есть ли у него спинка? 2) Есть ли у него верх? 3) Есть ли мягкая обивка? 4) Сможете ли вы с комфортом сидеть на нем долгое время? 5) Можете ли вы положить на него много чего? Типичный стул тогда будет представлен как Да, Нет, Да, Да, Нет или 10110 в двоичном формате, в то время как типичная таблица может быть Нет, Да, Нет, Нет, Да или 01001.Итак, на этапе обучения сеть просто просматривает множество чисел, таких как 10110 и 01001, и узнает, что некоторые из них означают стул (что может быть результатом 1), а другие означают таблицу (выход 0).
Для чего используются нейронные сети?
Фото: Последние два десятилетия НАСА экспериментировало с самообучающейся нейронной сетью под названием
Интеллектуальная система управления полетом (IFCS), которая может помочь пилотам приземлить самолеты после серьезных сбоев или повреждений в бою.Прототип испытывался на этом модифицированном самолете NF-15B (родственник McDonnell Douglas F-15). Фото Джима Росса любезно предоставлено
НАСА.
На основе этого примера вы, вероятно, увидите множество различных приложений для нейронных сетей, которые включают распознавание шаблонов и принятие простых решений по ним. В самолетах вы можете использовать нейронную сеть в качестве базового автопилота с модулями ввода, считывающими сигналы от различных приборов кабины, и модулями вывода, которые соответствующим образом изменяют органы управления самолета, чтобы безопасно удерживать его на курсе.Внутри фабрики вы можете использовать нейронную сеть для контроля качества. Допустим, вы производите средство для стирки одежды с помощью гигантского запутанного химического процесса. Вы можете измерить конечное моющее средство различными способами (его цвет, кислотность, толщину и т. Д.), Ввести эти измерения в свою нейронную сеть в качестве входных данных, а затем позволить сети решить, принять или отклонить партию.
Также существует множество приложений для нейронных сетей в сфере безопасности. Предположим, у вас есть банк, в котором каждую минуту через вашу компьютерную систему проходят тысячи транзакций по кредитным картам.Вам нужен быстрый автоматизированный способ выявления любых транзакций, которые могут быть мошенническими, и для этого идеально подходит нейронная сеть. Ваши данные будут примерно такими: 1) Присутствует ли на самом деле владелец карты? 2) Был ли использован действующий ПИН-код? 3) Было ли произведено пять или более транзакций по этой карте за последние 10 минут? 4) Используется ли карта в другой стране, в которой она зарегистрирована? -и так далее.
Имея достаточное количество подсказок, нейронная сеть может помечать любые транзакции, которые выглядят подозрительно, что позволяет оператору-человеку более внимательно их исследовать.Очень похожим образом банк может использовать нейронную сеть, чтобы помочь ему решить, давать ли ссуды людям на основе их прошлой кредитной истории, текущих доходов и трудовой книжки.
Фото: Распознавание рукописного ввода на сенсорном экране, планшетный компьютер — одно из многих приложений, идеально подходящих для нейронной сети. Каждый символ (буква, цифра или символ), который вы пишете, распознается на основе ключевых характеристик, которые он содержит (вертикальные линии, горизонтальные линии, наклонные линии, кривые и т. Д.), И порядка, в котором вы их рисуете на экране. .Нейронные сети со временем распознают все лучше и лучше.
Многие вещи, которые мы делаем каждый день, включают распознавание шаблонов и их использование для принятия решений, поэтому нейронные сети могут помочь нам множеством разных способов. Они могут помочь нам прогнозировать состояние фондовой биржи или погоду, управлять системами радиолокационного сканирования, которые автоматически идентифицируют вражеские самолеты или корабли, и даже помогать врачам диагностировать сложные заболевания на основе их симптомов. Прямо в эту минуту внутри вашего компьютера или мобильного телефона могут работать нейронные сети.Если вы используете приложения для мобильных телефонов, которые распознают ваш почерк на сенсорном экране, они могут использовать простую нейронную сеть, чтобы выяснить, какие символы вы пишете, ища отличительные особенности в отметках, которые вы делаете пальцами (и в каком порядке вы их делаете). Некоторые виды программного обеспечения для распознавания голоса также используют нейронные сети. То же самое и с некоторыми почтовыми программами, которые автоматически различают подлинные электронные письма и спам.
Нейронные сети даже доказали свою эффективность при переводе текста с одного языка на другой.
Автоматический перевод Google, например, за последние несколько лет все шире использует эту технологию для преобразования слов на одном языке (вход сети) в эквивалентные слова на другом языке (выход сети). В 2016 году Google
объявил, что использует то, что называется нейронным машинным переводом (NMT), для мгновенного преобразования целых предложений с
Снижение ошибок на 55–85%. Это всего лишь один пример того, как Google разворачивает технологию нейронных сетей: Google Brain.
так называется масштабное исследование, которое применяет нейронные методы ко всему спектру продуктов, включая
его поисковая система.Он также использует глубокие нейронные сети для поддержки рекомендаций, которые вы видите на YouTube, с моделями, которые «узнают приблизительно
один миллиард параметров и обучены на сотнях миллиардов примеров »[5]
В общем, нейронные сети сделали компьютерные системы более полезными, сделав их более человечными. Так что в следующий раз, когда вам захочется, чтобы ваш мозг был таким же надежным, как компьютер, подумайте еще раз — и будьте благодарны, что в вашей голове уже установлена такая превосходная нейронная сеть!
Понимание нейронных сетей: что, как и почему? | Автор: Юдж Изаугарат
Нейронные сети — один из самых мощных и широко используемых алгоритмов, когда речь идет о подполе машинного обучения, называемом глубоким обучением.На первый взгляд нейронные сети могут показаться черным ящиком ; входной слой помещает данные в « скрытые слои », и после волшебного трюка мы можем увидеть информацию, предоставленную выходным слоем . Однако понимание того, что делают скрытые слои, является ключевым шагом к реализации и оптимизации нейронной сети.
На нашем пути к пониманию нейронных сетей мы собираемся ответить на три вопроса: Что , Как и Почему ?
ЧТО такое нейронная сеть?
Нейронные сети, которые мы собираемся рассмотреть, строго называются искусственными нейронными сетями и, как следует из названия, основаны на том, что науке известно о структуре и функциях человеческого мозга.
Вкратце, нейронная сеть определяется как вычислительная система, которая состоит из ряда простых, но тесно взаимосвязанных элементов или узлов, называемых «нейронами», которые организованы в слои, которые обрабатывают информацию, используя динамические отклики состояния на внешние входные данные. Этот алгоритм чрезвычайно полезен, как мы объясним позже, для поиска шаблонов, которые слишком сложны для того, чтобы их можно было извлечь вручную и научить распознавать в машине. В контексте этой структуры шаблоны вводятся в нейронную сеть посредством входного уровня , который имеет один нейрон для каждого компонента, присутствующего во входных данных, и передается на один или несколько скрытых слоев , присутствующих в сети; называются «скрытыми» только потому, что они не составляют входной или выходной слой.Именно в скрытых слоях вся обработка на самом деле происходит через систему соединений, характеризуемых весами и смещениями (обычно обозначаются W и b) : входные данные принимаются, нейрон вычислить взвешенную сумму, добавив также смещение и в соответствии с результатом и предварительно установленной функцией активации (наиболее распространенной является сигмовидная, σ, , хотя она почти больше не используется, и есть лучшие, такие как ReLu ) , он решает, следует ли его «запустить» или активировать.После этого нейрон передает информацию ниже по потоку к другим подключенным нейронам в процессе, называемом « прямой проход ». В конце этого процесса последний скрытый слой связывается с выходным слоем , который имеет по одному нейрону для каждого возможного желаемого выхода.
Базовая структура двухуровневой нейронной сети. Wi: Вес соответствующего подключения. Примечание. Входной слой не учитывается при подсчете количества слоев в сети.
КАК работает нейронная сеть?
Теперь, когда у нас есть представление о том, как выглядит базовая структура нейронной сети, мы продолжим и объясним, как она работает.Для этого нам нужно объяснить различные типы нейронов, которые мы можем включить в нашу сеть.
Первый тип нейрона, который мы собираемся объяснить, — это Персептрон . Несмотря на то, что сегодня его использование уменьшилось, понимание того, как они работают, даст нам хорошее представление о том, как функционируют более современные нейроны.
Персептрон использует функцию для изучения двоичного классификатора путем сопоставления вектора двоичных переменных с одним двоичным выходом, а также его можно использовать в контролируемом обучении.В этом контексте перцептрон выполняет следующие шаги:
- Умножьте все входные данные на их веса w , действительные числа, которые выражают, насколько важны соответствующие входы для выхода,
- Сложите их вместе, указанные как взвешенная сумма : ∑ wj xj ,
- Примените функцию активации , другими словами, определите, превышает ли взвешенная сумма пороговое значение , , где -threshold эквивалентно смещению , и назначьте 1 или меньше и назначьте 0 как выход .
Мы также можем записать функцию персептрона в следующих терминах:
Примечания: b — смещение и эквивалентно -threshold, wx — скалярное произведение вектора w, компонент которого является весами, и x, a вектор, состоящий из входов.
Одним из самых сильных моментов этого алгоритма является то, что мы можем варьировать веса и смещение для получения различных моделей принятия решений. Мы можем присвоить этим входам больший вес, чтобы, если они положительны, они благоприятствовали желаемому результату.Кроме того, поскольку смещение можно понимать как меру того, насколько сложно или легко вывести 1, мы можем уменьшить или увеличить его значение, если мы хотим, чтобы желаемый результат был более или менее вероятным. Если мы обратим внимание на формулу, то увидим, что большое положительное смещение позволит очень легко вывести 1; однако очень отрицательное смещение сделает задачу выхода 1 очень маловероятной.
Как следствие, перцептрон может анализировать различные свидетельства или данные и принимать решение в соответствии с установленными предпочтениями.Фактически, можно создавать более сложные сети, включающие большее количество слоев перцептронов, где каждый уровень принимает выходные данные предыдущего, взвешивает их и принимает все более и более сложные решения.
Что, погоди: если перцептроны могут хорошо справляться с принятием сложных решений, зачем нам нейрон другого типа? Одним из недостатков сети, содержащей перцептроны, является то, что небольшие изменения весов или смещения, даже только в одном перцептроне, могут серьезно изменить наш выходной сигнал, переходя от 0 до 1 или наоборот.Что мы действительно хотим, так это иметь возможность постепенно изменять поведение нашей сети, внося небольшие изменения в веса или смещения. Вот где пригодится более современный тип нейрона (в настоящее время его используют другие типы, такие как Tanh, а в последнее время — ReLu): сигмовидные нейроны. Основное различие между сигмовидным нейроном и персептроном состоит в том, что вход и выход могут иметь любое непрерывное значение от 0 до 1. Выходной сигнал получается после применения сигмоидной функции ко входам с учетом весов, w , и смещение, b.Чтобы лучше визуализировать это, мы можем написать следующее:
Итак, формула вывода будет:
Если мы проведем математический анализ этой функции, мы можем построить график нашей функции σ , показанный ниже, и заключаем, что когда z велико и положительно, функция достигает своего максимального асимптотического значения, равного 1; однако, если z большое и отрицательное, функция достигает своего минимального асимптотического значения 0. Здесь сигмовидная функция становится очень интересной, потому что именно при умеренных значениях z функция принимает гладкую и близкую к линейной форму.В этом интервале небольшие изменения весов (Δwj) или смещения (Δbj) вызовут небольшие изменения в выходных данных; желаемое поведение, которое мы искали как улучшение перцептрона.
Форма сигмовидной функции, используемой в сигмовидных нейронах для получения небольших изменений выходного сигнала, вносящих небольшие изменения в веса или смещение. z = -∑wj xj-b
Мы знаем, что производная функции является мерой скорости, с которой значение y изменяется относительно изменения переменной x. В этом случае переменная y является нашим выходом, а переменная x является функцией весов и смещения.Мы можем воспользоваться этим и рассчитать изменение выпуска, используя производные, и в частности частные производные (по w и по b). Вы можете прочитать этот пост, чтобы следить за вычислениями, но в случае сигмовидной функции производная будет уменьшена для вычисления: f (z) * (1-f (z)).
Вот простой код, который можно использовать для моделирования сигмоидной функции:
Мы только что объяснили функционирование каждого нейрона в нашей сети, но теперь мы можем изучить, как работает остальная часть.Нейронные сети, в которых выходные данные одного уровня используются в качестве входных данных следующего уровня, называются с прямой связью , в частности, потому что здесь нет циклов, и информация передается только вперед и никогда не возвращается.
Предположим, что у нас есть обучающий набор, и мы хотим использовать трехслойную нейронную сеть, в которой мы также используем сигмовидный нейрон, который мы видели выше, для прогнозирования определенной функции. Принимая во внимание то, что мы объясняем о структуре нейронной сети, веса и смещения должны быть сначала присвоены связям между нейронами в одном слое и следующем слое.Обычно смещения и веса инициализируются случайным образом в матрице синапсов. Если мы кодируем нейронную сеть на python, мы можем использовать функцию Numpy np.random.random
, генерирующую гауссовские распределения (где среднее значение равно 0, а стандартное отклонение — 1), чтобы иметь место для начала обучения.
После этого мы построим нейронную сеть, начиная с шага Feedforward , чтобы вычислить прогнозируемый результат; другими словами, нам просто нужно построить различные уровни, участвующие в сети:
-
layer0
— входной уровень; наш обучающий набор читается как матрица (мы можем назвать его X) -
layer1
получается путем применения функции активации a ’= σ (w.X + b), в нашем случае выполнение умножения точек между входомlayer0
и матрицей синапсисаsyn0
-
layer2
— это выходной слой, полученный умножением точек междуlayer1
и его синапсисомsyn1
Нам также потребуется выполнить итерацию по обучающей выборке, чтобы позволить сети обучаться (мы увидим это позже). Для этого мы добавим для петли.
До сих пор мы создали базовую структуру нейронной сети: различные слои, веса и смещение связи между нейронами и сигмовидную функцию.Но ничто из этого не объясняет, как нейронная сеть может так хорошо предсказывать закономерности в наборе данных. И это то, что подводит нас к нашему последнему вопросу.
ПОЧЕМУ нейронные сети могут учиться?
Основная сила алгоритмов машинного обучения — их способность учиться и совершенствоваться каждый раз при прогнозировании результатов. Но что значит, что они могут учиться? В контексте нейронных сетей это означает, что веса и смещения, которые определяют связь между нейронами, становятся более точными; это, в конечном итоге, выбираются веса и смещения, например, выходные данные сети приблизительно соответствуют реальному значению y (x) для всех обучающих входов.
Итак, как мы можем количественно оценить, насколько далеко наш прогноз от нашего реального значения, чтобы мы знали, нужно ли нам продолжать поиск более точных параметров? Для этой цели нам нужно вычислить ошибку или, другими словами, определить функцию стоимости (функция стоимости — это не что иное, как ошибка в прогнозировании правильного вывода, который имеет наша сеть; другими словами, это разница между ожидаемым и прогнозируемым выходом). В нейронных сетях наиболее часто используется квадратичная функция стоимости, также называемая среднеквадратической ошибкой, определяемая формулой:
w и b относятся ко всем весам и смещениям в сети, соответственно.n — общее количество обучающих входов. a — это выходы, когда x — вход. ∑ — это сумма всех обучающих входов.
Эта функция предпочтительнее линейной ошибки из-за того, что в нейронных сетях небольшие изменения весов и смещений не приводят к изменению количества правильных выходов; поэтому использование квадратичной функции, в которой большие различия оказывают большее влияние на функцию стоимости, чем маленькие, помогает выяснить, как изменить эти параметры.
С другой стороны, мы можем видеть, что наша функция стоимости становится меньше по мере приближения результата к реальному значению y для всех обучающих входов.Основная цель нашего алгоритма — минимизировать эту функцию стоимости, найдя набор весов и смещений, чтобы сделать ее как можно меньше. И основным инструментом для достижения этой цели является алгоритм под названием Gradient Descent .
Тогда следующий вопрос, на который мы должны ответить, — как мы можем минимизировать функцию стоимости. Из исчисления мы знаем, что функция может иметь глобальный максимум и / или минимум, то есть там, где функция достигает максимального или минимального значения, которое она может иметь.Мы также знаем, что один из способов получить эту точку — это вычисление производных. Однако это легко вычислить, когда у нас есть функция с двумя переменными, но в случае нейронной сети они включают множество переменных, которые делают это вычисление совершенно невозможным.
Вместо этого давайте посмотрим на график ниже случайной функции:
Мы видим, что эта функция имеет глобальный минимум. Мы могли бы, как мы сказали ранее, вычислить производные, чтобы вычислить, где находится минимум, или мы могли бы использовать другой подход.Мы можем начать со случайной точки и попытаться сделать небольшое движение в направлении стрелки, математически говоря, переместим Δx в направлении x и Δy в направлении y и вычислим изменение нашей функции ΔC. Поскольку скорость изменения направления является производной функции, мы могли бы выразить изменение функции как:
Здесь мы возьмем определение из вычисления градиента функции:
Градиент функции: Вектор с частными производными
Теперь мы можем переписать изменение в нашей функции как:
Градиент C связывает изменение функции C с изменениями в (x, y)
Итак, теперь мы можем увидеть, что происходит с функцией стоимости, когда мы выбираем определенное изменение наших параметров.Величина, которую мы выбираем для движения в любом направлении, называется скоростью обучения , и именно она определяет, насколько быстро мы приближаемся к глобальному минимуму. Если мы выберем очень маленькое число, нам нужно будет сделать слишком много ходов, чтобы достичь этой точки; однако, если мы выберем очень большое число, мы рискуем пройти точку и никогда не сможем ее достичь. Таким образом, задача состоит в том, чтобы выбрать достаточно небольшую скорость обучения. После выбора скорости обучения мы можем обновить наши веса и смещения и сделать еще один шаг; процесс, который мы повторяем на каждой итерации.
Итак, вкратце, градиентный спуск работает, многократно вычисляя градиент ∇C, а затем обновляя веса и смещения и пытаясь найти правильные значения, которые минимизируют, таким образом, стоимость функции. И так нейронная сеть учится.
Иногда вычисление градиента может быть очень сложным. Однако есть способ ускорить эти вычисления, называемый стохастическим градиентным спуском . Это работает путем оценки градиента ∇C путем вычисления градиента для небольшой выборки случайно выбранных обучающих входных данных.Затем эти небольшие выборки являются средними, чтобы получить хорошую оценку истинного градиента, ускоряя градиентный спуск и, таким образом, быстрее обучаясь.
Но подождите секунду? Как мы вычисляем градиент функции стоимости? Вот где другой алгоритм делает запись: Обратное распространение . Цель этого алгоритма — вычислить частные производные функции стоимости по любому весу w и любому смещению b; на практике, , это означает вычисление векторов ошибок, начиная с последнего слоя, а затем их распространение обратно для обновления весов и смещений.Причина, по которой нам нужно вернуться, заключается в том, что стоимость является функцией производительности нашей сети. Нам необходимо вычислить несколько вычислений и ошибок, формула которых задается алгоритмом обратного распространения ошибки: 1) Ошибка вывода (δL), связанная с поэлементным (⦿) произведением градиента (▽ C) на производную функции активации ( σ ′ (z)), 2) ошибка одного слоя (ẟl) в терминах ошибки в следующем слое, связанная с транспонированной матрицей весов (Wl + 1), умноженной на ошибку следующего слоя (ẟl + 1 ) и поэлементное умножение производной функции активации, 3) скорость изменения стоимости относительно любого смещения в сети: это означает, что частная производная C по любому смещению (∂C / ∂bj) равна ошибке ẟl, 4) скорости изменения стоимости по отношению к любому весу в сети: это означает, что частная производная C по любому весу (∂C / ∂wj) равна ошибке (ẟl ), умноженное на активацию входа нейрона.Эти два последних вычисления составляют градиент функции стоимости. Здесь мы можем наблюдать формулы.
Четыре основные формулы, задаваемые алгоритмами обратного распространения, которые полезны для реализации нейронных сетей.
Алгоритм обратного распространения ошибки вычисляет градиент функции стоимости только для одного единственного обучающего примера. Как следствие, нам необходимо объединить обратное распространение с алгоритмом обучения, например стохастическим градиентным спуском, чтобы вычислить градиент для всего обучающего набора.
Теперь, как мы применим это к нашей нейронной сети на Python ?. Здесь мы можем шаг за шагом увидеть вычисления:
Давайте подведем итоги…
Теперь мы можем представить все эти формулы и концепции, которые мы видели в терминах алгоритма, чтобы увидеть, как мы можем это реализовать:
- INPUT : Мы вводим набор обучающих примеров и устанавливаем активацию и , которые соответствуют входному слою .
- FEEDFORWARD : для каждого слоя мы вычисляем функцию z = w.a + b, будучи a = σ (z)
- ОШИБКА ВЫВОДА : Мы вычисляем ошибку вывода, используя формулу №1, приведенную выше.
- ОБРАТНЫЙ ПРОЦЕСС : Теперь мы передаем ошибку в обратном направлении; для каждого слоя мы вычисляем формулу №2, приведенную выше.
- ВЫХОД : Мы вычисляем градиентный спуск с учетом любого веса и смещения, используя формулы № 3 и № 4.
Конечно, есть больше концепций, реализаций и улучшений, которые можно сделать в нейронных сетях, которые в последние годы могут стать все более и более широко используемыми и мощными.Но я надеюсь, что эта информация может дать вам представление о том, что такое нейронная сеть, как она работает и обучается с помощью градиентного спуска и обратного распространения ошибки.
Ссылки:
Пояснение для начинающих о том, как работают нейронные сети | Теренс Шин
Опять же, я не хочу слишком углубляться в механику, но стоит показать вам, как выглядит структура базовой нейронной сети.
В нейронной сети есть входной слой , один или несколько скрытых слоев и выходной слой .Входной слой состоит из одной или нескольких переменных характеристик (или входных переменных или независимых переменных), обозначенных как x1, x2,…, xn. Скрытый слой состоит из одного или нескольких скрытых узлов , или скрытых блоков. Узел — это просто один из кругов на диаграмме выше. Точно так же выходная переменная состоит из одной или нескольких выходных единиц.
У данного слоя может быть много узлов, как на изображении выше.
Также данная нейронная сеть может иметь много слоев. Как правило, большее количество узлов и слоев позволяет нейронной сети выполнять гораздо более сложные вычисления.
Выше показан пример потенциальной нейронной сети. Он имеет три входные переменные: размер участка, количество спален и средн. Семейный доход. Подача в эту нейронную сеть этих трех частей информации, она вернет выходную цену дома. Так как именно он это делает?
Как я сказал в начале статьи, нейронная сеть — это не что иное, как сеть уравнений. Каждый узел нейронной сети состоит из двух функций: линейной функции и функции активации.Здесь все может немного запутаться, но пока думайте о линейной функции как о некоторой линии наилучшего соответствия. Кроме того, представьте себе функцию активации как выключатель света, который дает число от 1 до 0.
Происходит то, что входные характеристики (x) передаются в линейную функцию каждого узла, в результате чего получается значение z . Затем значение z вводится в функцию активации, которая определяет, включен ли выключатель света (от 0 до 1).
Таким образом, каждый узел в конечном итоге определяет, какие узлы на следующем уровне активируются, пока не достигнет выхода.В этом суть нейронной сети.
Если вы хотите узнать о различных типах функций активации, о том, как нейронная сеть определяет параметры линейных функций и как она ведет себя как самообучающаяся модель «машинного обучения», есть полные курсы, посвященные нейронной сети. сети, которые вы можете найти в Интернете!
Учебное пособие по нейронной сети: пошаговое руководство для начинающих
В области машинного обучения есть много интересных концепций.В этом руководстве по нейронным сетям мы обсудим одну из фундаментальных концепций нейронных сетей. Эта статья поможет вам понять работу этих сетей, объяснив теорию, лежащую в основе них.
После изучения этого руководства по искусственной нейронной сети вы обнаружите:
- Что такое нейронная сеть?
- Как работает нейронная сеть?
- Какие бывают типы нейронных сетей?
Что такое нейронные сети?
Нейронная сеть — это система, которая действует как человеческий мозг.Это довольно просто, но распространено в нашей повседневной жизни.
Сложное определение будет заключаться в том, что нейронная сеть — это вычислительная модель с сетевой архитектурой. Эта архитектура состоит из искусственных нейронов. Эта структура имеет определенные параметры, с помощью которых ее можно модифицировать для выполнения определенных задач.
Они обладают обширными аппроксимационными свойствами. Это означает, что они могут аппроксимировать функцию с любым уровнем точности независимо от ее размерности. Нейронные сети находят широкое применение в тех областях, где традиционные компьютеры не очень хорошо себя чувствуют.От Siri до Google Maps нейронные сети присутствуют везде, где используется искусственный интеллект.
Они являются важной частью операций искусственного интеллекта. Нейронные сети черпают вдохновение в человеческом мозге, поэтому их структура аналогична таковой.
Как работает нейронная сеть?
Нейронная сеть состоит из множества слоев. Каждый слой выполняет определенную функцию, и чем сложнее сеть, тем больше слоев. Вот почему нейронную сеть еще называют многослойным перцептроном.
Самая чистая форма нейронной сети состоит из трех слоев:
- Входной слой
- Скрытый слой
- Выходной слой
Как следует из названий, каждый из этих слоев имеет определенное назначение. Эти слои состоят из узлов. В зависимости от требований в нейронной сети может быть несколько скрытых слоев. Входной слой принимает входные сигналы и передает их следующему уровню. Он собирает данные из внешнего мира.
Скрытый слой выполняет все внутренние задачи расчета. Сеть может даже не иметь скрытых слоев. Однако нейронная сеть имеет как минимум один скрытый слой. Выходной слой передает окончательный результат расчета скрытого слоя.
Как и другие приложения для машинного обучения, вам также необходимо обучить нейронную сеть с некоторыми обучающими данными, прежде чем вы предоставите ей конкретную задачу. Но прежде чем мы углубимся в то, как нейронная сеть решает проблему, вы должны сначала узнать о работе слоев перцептрона:
Как работают слои перцептрона?
Нейронная сеть состоит из множества слоев персептронов; именно поэтому он получил название «многослойный перцептрон».’Эти слои также называются скрытыми слоями плотных слоев. Они состоят из множества нейтронов персептрона. Это основная единица, которая работает вместе, образуя слой перцептрона. Эти нейроны получают информацию в виде набора входов. Вы комбинируете эти числовые входные данные со смещением и группой весов, что затем дает единый выходной сигнал.
Для вычислений каждый нейрон учитывает веса и смещение. Затем комбинированная функция использует вес и смещение для получения выходных данных (измененных входных данных).Он работает по следующему уравнению:
комбинация = смещение + веса * входы
После этого функция активации выдает результат со следующим уравнением:
выход = активация (комбинация)
Эта функция определяет, какую роль выполняет нейронная сеть. Они образуют слои сети. Ниже перечислены основные функции активации:
.
Линейная функция
В этой функции на выходе — только комбинация нейрона:
активация = комбинация
Функция гиперболического тангенса
Это самая популярная функция активации среди нейронных сетей.Это сигмовидная функция, и она находится между -1 и +1:
.
активация = tanh (комбинация)
Логистическая функция
Логистическая функция очень похожа на функцию гиперболического тангенса, потому что это тоже своего рода сигмоидальная функция. Однако он отличается, потому что находится между 0 и 1:
.
активация = 11 + электронная комбинация
Выпрямленная функция линейной единицы
Так же, как функция гиперболического тангенса, выпрямленная функция линейных единиц также является превалирующей.Другое название выпрямленной линейной единичной функции — ReLU. ReLU равно комбинации, когда она больше или равна нулю, и отрицательно, если комбинация меньше (отрицательного) нуля.
Итак, как именно работает нейронная сеть?
Теперь, когда вы знаете, что скрывается за нейронной сетью и как она работает, мы можем сосредоточиться на работе нейронной сети.
Вот как это работает:
- Информация подается на входной уровень, который передает ее на скрытый слой
- Взаимосвязи между двумя уровнями случайным образом присваивают веса каждому входу
- Смещение, добавляемое к каждому входу после умножения весов на них по отдельности
- Взвешенная сумма передается в функцию активации
- Функция активации определяет, какие узлы должны запускаться для извлечения признаков
- Модель применяет функцию приложения к выходному слою для доставки выходных данных
- Веса скорректированы, и выходные данные распространяются в обратном направлении, чтобы минимизировать ошибку
Модель использует функцию стоимости для уменьшения количества ошибок.Вам придется менять веса с разными тренировочными моделями.
- Модель сравнивает вывод с исходным результатом
- Процесс повторяется для повышения точности
Модель корректирует веса на каждой итерации, чтобы повысить точность вывода.
Типы нейронных сетей
1) Рекуррентная нейронная сеть (RNN)
В этой сети выходные данные слоя сохраняются и передаются обратно на вход.Таким образом, узлы определенного слоя запоминают некоторую информацию о прошлых шагах. Комбинация входного слоя — это произведение суммы весов и характеристик. Повторяющийся процесс нейронной сети начинается в скрытых слоях.
Здесь каждый узел запоминает некоторую информацию своего предшествующего шага. Модель сохраняет некоторую информацию от каждой итерации, которую она может использовать позже. Система самообучается, когда ее результат неверен. Затем он использует эту информацию для повышения точности своего прогноза при обратном распространении.Наиболее популярное применение RNN — технология преобразования текста в речь.
2) Сверточная нейронная сеть (CNN)
Эта сеть состоит из одного или нескольких сверточных слоев. Сверточный слой, присутствующий в этой сети, применяет сверточную функцию к входу перед передачей на следующий уровень. За счет этого в сети меньше параметров, но она становится более глубокой. CNN широко используются при обработке естественного языка и распознавании изображений.
3) Нейронная сеть радиальной базовой функции (RBFNN)
Эта нейронная сеть использует радиальную базисную функцию. Эта функция учитывает расстояние точки от центра. Эти сети состоят из двух слоев. Скрытый слой объединяет функции с радиальной базовой функцией и передает выходные данные на следующий слой.
Следующий уровень работает так же, как и предыдущий. Нейронные сети с радиальной базисной функцией используются в энергосистемах.
4) Нейронная сеть прямого распространения (FNN)
Это чистейшая форма искусственной нейронной сети. В этой сети данные перемещаются в одном направлении, то есть от входного уровня к выходному слою. В этой сети выходной слой получает сумму произведений входов и их весов. В этой нейронной сети нет обратного распространения. В этих сетях может быть много или ноль скрытых слоев. Их проще обслуживать и находить применение при распознавании лиц.
5) Модульная нейронная сеть
В этой сети есть несколько сетей, которые функционируют независимо. Все они выполняют определенные задачи, но не взаимодействуют друг с другом в процессе вычислений.
Таким образом, модульная нейронная сеть может выполнять очень сложную задачу с гораздо большей эффективностью. Эти сети сложнее поддерживать по сравнению с более простыми сетями (такими как FNN), но они также обеспечивают более быстрые результаты для сложных задач.
Подробнее о нейронных сетях
Вот и все в нашем руководстве по нейронной сети. Вы, должно быть, видели, какие разнообразные задачи могут выполнять эти сети.