нейросети

Тренировка нейронной сети многовариантные исчисления, Часть 2

Текущая цель понятна – это минимизация потерь нейронной сети. Теперь стало ясно, что повлиять на предсказания сети можно при помощи изменения ее веса и смещения. Однако, как минимизировать потери?

Для простоты давайте представим, что в наборе данных рассматривается только :

Имя/Name Вес/Weight (минус 135) Рост/Height (минус 66) Пол/Gender
Alice -2 -1 1

Затем потеря среднеквадратической ошибки будет просто квадратической ошибкой для :

Еще один способ понимания потери – представление ее как функции веса и смещения. Давайте обозначим каждый вес и смещение в рассматриваемой сети:

Затем можно прописать потерю как многовариантную функцию:

Представим, что нам нужно немного отредактировать . В таком случае, как изменится потеря после внесения поправок в ?

На этот вопрос может ответить частная производная . Как же ее вычислить?

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

Данные вычисления возможны благодаря дифференцированию сложной функции. 

Подсчитать можно благодаря вычисленной выше :

Теперь, давайте определим, что делать с . Как и ранее, позволим , , стать результатами вывода нейронов, которые они представляют. Дальнейшие вычисления:

Как было указано ранее, здесь является функцией активации сигмоида.

Так как влияет только на , а не на , можно записать:

Использование дифференцирования сложной функции.

Те же самые действия проводятся для :

Еще одно использование дифференцирования сложной функции.

В данном случае — вес, а — рост. Здесь как производная функции сигмоида встречается во второй раз. Попробуем вывести ее:

Функция в таком виде будет использована несколько позже.

Вот и все. Теперь разбита на несколько частей, которые будут оптимальны для подсчета:

Эта система подсчета частных производных при работе в обратном порядке известна, как метод обратного распространения ошибки, или backprop.

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

Нейронные сети

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

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

Нейронная сеть

Первым нейронным сетевым алгоритмом был перцептрон

Его внутреннюю работу хорошо раскрывает данная статья (обратите внимание на анимации)

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

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

У нашей нейронной сети будет 2 скрытых слоя (надо выбрать, сколько их будет в вашей модели — это часть проектирования архитектуры). Задача каждого скрытого уровня заключается в том, чтобы превратить входные данные во что-то, что мог бы использовать слой вывода.

Первый скрытый слой

Слой ввода и первый скрытый слой

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

В слое ввода один узел соответствует слову из набора данных. Рассмотрим это чуть позже.

Как объяснено в этой статье, каждый узел (нейрон) умножается на вес, т.е. имеет значение веса. В ходе обучения нейронная сеть регулирует эти показатели, чтобы произвести правильные выходные данные. Сеть также добавляет смещение.

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

Существует много видов функции активации. Используем усеченное линейное преобразование (ReLu). Эта функция определяется следующим образом:

Примеры: если x = −1, то  (ноль); если x = 0,7, то .

Второй скрытый слой

Второй скрытый слой делает то же самое, что и первый, но теперь входными данными являются выходные данные первого слоя:

Первый и второй скрытые слои

Слой вывода

И, наконец, мы добираемся до последнего пункта — слоя вывода. Чтобы получить его результаты, будем использовать унитарное кодирование. Здесь только один бит равен единице, а все остальные — нулевые. Например, мы хотим закодировать три категории: «спорт», «космос» и «компьютерная графика»:

Получим, что число узлов вывода равно числу классов входного набора данных.

Значения слоя вывода умножаются на веса, к ним добавляется смещение, но функция активации уже другая.

Мы хотим пометить каждый текст категорией, между собой они являются взаимоисключающими, т.к. текст не может принадлежать двум категориям одновременно. Чтобы достичь цели, вместо ReLu возьмем функцию Softmax. Она преобразует вывод для каждой категории в значение между 0 и 1, а также проверяет, что сумма всех значений равна 1. Так вывод покажет нам вероятность принадлежности текста к каждой категории:

Теперь у нас есть граф потока данных нейронной сети. Если перевести все в код, то получится примерно следующее:

Talk to Books

Ещё одно приложение на базе ИИ от Google AI. Оно наглядно демонстрирует на что способна эта инновационная технология. Talk to Books даёт ответы на вопросы через цитаты из книг. В отличие от стандартного поиска этот сервис не боится даже самых абстрактных вопросов, например, «в чём смысл жизни?» или «что значит быть человеком?». Так что вы можете рассчитывать на честные ответы даже на самые необычные вопросы. Взгляните на результат по запросу: “что такое Ктулху?”:

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

В базе данных проекта содержится около 100 000 работ. Механизм рекомендаций пытается найти наиболее подходящие выдержки по смыслу. Также вы можете отфильтровать по категориям книги и выбрать только те жанры, которые захотите.

Игры с ботами

Развлекаться с недоученными нейросетями очень весело: они порой выдают такие ошибки, что в страшном сне не приснится. А если ИИ начинает учиться, появляется азарт: «Неужто сумеет?» Поэтому сейчас набирают популярность интернет-игры с нейросетями.

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

Другое развлечение с «угадайкой» предлагает ИИ от Google: нужно накалякать за двадцать секунд рисунок к заданному слову, а нейросеть потом пробует угадать, что это было. Программа очень смешно промахивается, но порой для верного ответа хватает всего пары линий — а ведь именно так узнаём объекты и мы сами.

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

ИИ общего назначения

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

Есть ими­та­ции искус­ствен­но­го интел­лек­та в отно­си­тель­но широ­ких обла­стях, но пол­но­цен­но мыс­лить как люди они не могут. Напри­мер, раз­ра­бот­ка ком­па­нии IBM — ИИ Watson — может стро­ить логи­че­ские свя­зи меж­ду мно­же­ством фак­тов и делать пра­виль­ные выво­ды на их осно­ве. Одно из при­ме­не­ний Ват­со­на — поста­нов­ка диа­гно­зов в меди­цине. Ещё он кру­то игра­ет в «Jeopardy!» — ана­лог «Сво­ей игры» на аме­ри­кан­ском ТВ.

IBM назна­чи­ла приз в мил­ли­он дол­ла­ров тому, кто побе­дит Ват­со­на в «Сво­ей игре». До сих пор нико­му это не уда­лось.

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

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

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

Пишем XGBoost с нуля часть 1: деревья решений

Tutorial


Привет, Хабр!
После многочисленных поисков качественных руководств о решающих деревьях и ансамблевых алгоритмах (бустинг, решающий лес и пр.) с их непосредственной реализацией на языках программирования, и так ничего не найдя (кто найдёт — напишите в комментах, может, что-то новое почерпну), я решил сделать своё собственное руководство, каким бы я хотел его видеть. Задача на словах простая, но, как известно, дьявол кроется в мелочах, коих в алгоритмах с деревьями очень много.
Так как тема достаточно обширная, то очень сложно будет уместить всё в одну статью, поэтому будет две публикации: первая посвящена деревьям, а вторая часть будет посвящена реализации алгоритма градиентного бустинга. Весь изложенный здесь материал собран и оформлен на основе открытых источников, моего кода, кода коллег и друзей. Сразу предупреждаю, кода будет много.

This Person Does Not Exist

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

Конференция MIELOCONF

24 января 2020, Москва, 10 000–17 000 ₽

tproger.ru

События и курсы на tproger.ru

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

Автор проекта — инженер Uber Филипп Ван. Он использовал алгоритм (первоначально написанный в Nvidia), чтобы сделать гиперреалистичные портреты. Этот алгоритм известен как генеративно-состязательная сеть (GAN). Все изображения генерируются на основе обширной библиотеки. Система последовательно использует две нейронные сети: одна создаёт картинку, а другая оценивает её реализм.

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

Ван также утверждал, как важно информировать людей о том, что этот тип технологий может быть как революционным, так и опасным

Так началось это…

После запуска проекта с лицами другие разработчики использовали его код (находящийся в открытом доступе на Github) для других сайтов вроде thiscatdoesnotexist.com и thesecatsdonotexist.com, чтобы создавать несуществующих котов. Они выглядят довольно реалистично, но вы можете заметить некоторые странные фрагменты. Иногда это выглядит очень жутко.

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

Рекуррентными называют такие нейронные сети, соединения между нейронами которых, образуют ориентировочный цикл. Имеет такие характеристики:

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

Рекуррентные нейронные сети применяются в распознавании и обработке текстовых данных (в частотности на их основе работает Гугл переводчик, алгоритм Яндекс «Палех», голосовой помощник Apple Siri).

Создание нейронной сети прямое распространение FeedForward

Далее будет показано, как реализовать прямое распространение feedforward в отношении нейронной сети. В качестве опорной точки будет использована следующая схема нейронной сети:

Python

import numpy as np

# … Здесь код из предыдущего раздела

class OurNeuralNetwork:
«»»
Нейронная сеть, у которой:
— 2 входа
— 1 скрытый слой с двумя нейронами (h1, h2)
— слой вывода с одним нейроном (o1)
У каждого нейрона одинаковые вес и смещение:
— w =
— b = 0
«»»
def __init__(self):
weights = np.array()
bias = 0

# Класс Neuron из предыдущего раздела
self.h1 = Neuron(weights, bias)
self.h2 = Neuron(weights, bias)
self.o1 = Neuron(weights, bias)

def feedforward(self, x):
out_h1 = self.h1.feedforward(x)
out_h2 = self.h2.feedforward(x)

# Вводы для о1 являются выводами h1 и h2
out_o1 = self.o1.feedforward(np.array())

return out_o1

network = OurNeuralNetwork()
x = np.array()
print(network.feedforward(x)) # 0.7216325609518421

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

importnumpy asnp

 
# … Здесь код из предыдущего раздела
 
 

classOurNeuralNetwork

«»»

    Нейронная сеть, у которой:
        — 2 входа
        — 1 скрытый слой с двумя нейронами (h1, h2)
        — слой вывода с одним нейроном (o1)
    У каждого нейрона одинаковые вес и смещение:
        — w =
        — b = 0
    «»»

def__init__(self)

weights=np.array(,1)

bias=

# Класс Neuron из предыдущего раздела

self.h1=Neuron(weights,bias)

self.h2=Neuron(weights,bias)

self.o1=Neuron(weights,bias)

deffeedforward(self,x)

out_h1=self.h1.feedforward(x)

out_h2=self.h2.feedforward(x)

# Вводы для о1 являются выводами h1 и h2

out_o1=self.o1.feedforward(np.array(out_h1,out_h2))

returnout_o1

network=OurNeuralNetwork()

x=np.array(2,3)

print(network.feedforward(x))# 0.7216325609518421

Мы вновь получили . Похоже, все работает.

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

Спектр применения нейросетей невероятно широк и ограничен лишь нашей фантазией. Перечислим некоторые из них:

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

Что собой представляют курсы data science онлайн

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

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

Python код среднеквадратической ошибки MSE

Ниже представлен код для подсчета потерь:

Python

import numpy as np

def mse_loss(y_true, y_pred):
# y_true и y_pred являются массивами numpy с одинаковой длиной
return ((y_true — y_pred) ** 2).mean()

y_true = np.array()
y_pred = np.array()

print(mse_loss(y_true, y_pred)) # 0.5

1
2
3
4
5
6
7
8
9
10
11
12

importnumpy asnp

defmse_loss(y_true,y_pred)

# y_true и y_pred являются массивами numpy с одинаковой длиной

return((y_true-y_pred)**2).mean()

y_true=np.array(1,,,1)

y_pred=np.array(,,,)

print(mse_loss(y_true,y_pred))# 0.5

При возникновении сложностей с пониманием работы кода стоит ознакомиться с в NumPy для операций с массивами.

Современные модели принятия решений на базе нейросетей

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

По ряду направлений (машинное и глубокое обучение) удалось добиться значительного прогресса и разработать новые алгоритмы для автоматизации диагностики заболеваний глаз , включая скрининг глаукомы на основе цветных изображений глазного дна и ОКТ-данных

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

Узкий (слабый) тип ИИ запрограммирован на линейную функцию, и многие технологии, применяемые в нашей повседневной жизни, используют именно его. Например, к ним относятся спам-фильтры электронной поч­ты, Facebook и Google search. Общий (сильный) тип ИИ является следующим шагом в развитии. Считается, что с таким типом ИИ компьютер был бы также умен, как человек. Такие сети могли бы рассуждать, планировать, решать проблемы и мыслить абстрактно. Наконец, искусственный суперинтеллект выходит далеко за пределы нашего биологического диапазона знаний и умений. Он характеризуется, как интеллект, который в 1 трлн раз умнее, чем лучшие человеческие мозги практически во всех областях, и является делом будущего. Сверточные нейронные сети ИИ — это категория искусственных нейронных сетей, которые доказали свою эффективность в таких областях, как распознавание изображений и видеоданных, картографии, классификация и распознавание речи, сетевого трафика, банковских трансакций. Сверточные нейронные сети используют особую архитектуру, которая делает их хорошо приспособленными для распознавания графических объектов, в то время как другие сети рассматривают соседние входные пиксели на тех же условиях, что и удаленные, сверточные нейронные сети пользуются преимуществами топологии. Такие сети быстрее обучаются . Сверточные сети используют несколько идентичных копий одного и того же нейрона. Сети имеют четыре основные операции: 1) свертка; 2) нелинейность; 3) объединение или субвыборка; 4) классификация. Эти операции действуют на изображения, которые могут быть представлены в виде матрицы со значениями пикселей .

Особенности и должностные обязанности специалиста

Перед тем, как выбрать курсы data science, нужно оценить все особенности профессии. В работе с данными применяются различные способы:

  • Методы разработки баз данных и проектирования;
  • Метод применения искусственного интеллекта для полноценной обработки значительного количества данных;
  • Моделирование базы данных, статистическая методика оценки, интеллектуальный анализ.

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

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

Нейронные сети глубокого обучения

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

Глубокая нейронная сеть (с двумя скрытыми слоями)

Нейроны сгруппированы в три различных типа слоев:

  • входной слой;
  • скрытый слой (слои);
  • выходной слой.

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

Скрытые слои выполняют математические вычисления со входными данными. Одна из задач при создании нейронных сетей — определение количества скрытых слоев и нейронов на каждом слое.

Слово «глубина» в термине «глубокое обучение» означает наличие более чем одного скрытого слоя.

Выходной слой выдает результат. В нашем случае это прогноз цены на билет.

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

Вес определяет важность элемента входных данных. Исходные веса задаются случайным образом

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

Каждый нейрон имеет функцию активации. Ее смысл трудно понять без привлечения математических рассуждений. Одной из ее целей является «стандартизация» данных на выходе из нейрона.

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

TensorFlow

TensorFlow — это библиотека с открытым кодом для машинного обучения, созданная Google. Название помогает понять, как с ней работать: тензоры являются многомерными массивами, которые текут (flow) через узлы графа.

tf.Graph

Каждое вычисление в TensorFlow представляется как граф потока данных. У него есть два элемента:

  1. Набор , который представляет единицы вычислений.
  2. Набор , который представляет единицы данных.

Чтобы увидеть, как это все работает, создадим следующий граф потока данных:

Граф, выполняющий x+y

Определим и . Так как для представления единиц данных граф работает с , создадим тензоры-константы:

Теперь определим единицу операции:

У нас есть все элементы графа. Пора его построить:

Так рабочий процесс TensorFlow и устроен: сначала вы создаете граф, а потом выполняете вычисления, действительно «запуская» узлы графа с операциями. Для этого необходимо создать .

tf.Session

Объект инкапсулирует среду, в которой выполняются объекты и оцениваются объекты (по крайней мере, так сказано в документации). Чтобы сделать это, необходимо определить, какой граф мы будем использовать в сессии:

Для выполнения операций используется метод . Он совершает один «шаг» вычислений TensorFlow, запуская необходимый фрагмент графа для выполнения каждого объекта и оценки каждого , переданного в аргументе . В нашем случае запускается шаг операции сложения:

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

Обучение нейросети — самая сложная часть глубокого обучения. Почему?

  • Вам нужен большой набор данных.
  • Вам нужно большое количество вычислительной мощности.

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

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

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

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

Как уменьшить значение функции потерь?

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

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

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

Для минимизации функции потерь нужно многократно перебирать данные. Именно поэтому нам требуется большая вычислительная мощность. Уточнение весов с помощью градиентного спуска выполняется автоматически. В этом и состоит магия глубокого обучения!

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

В сухом остатке:

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

Интересные статьи:

  • Интернет вещей ускорил развитие AI в геометрической прогрессии
  • Рекуррентные нейронные сети: типы, обучение, примеры и применение
  • Как создать собственную нейронную сеть с нуля на языке Python

Байесовские сети БС

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

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

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

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

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

Ссылка на основную публикацию