www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

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

Дата публикации May 30, 2017

Хотя я недавно закончил программу Udacity Deep Learning NanoDegree, я довольно новичок в этом предмете. Стремясь продолжить учебу, я в настоящее время читаю прекрасную книгу на эту тему, Эндрю ТраскГроккинг глубокое обучение,Эта запись в блоге непосредственно вдохновлена ​​этой фантастической книгой.

Итак, что такое нейронная сеть?

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

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

def neural_network(input, weight):
prediction = input * weight
return prediction

Это самая простая нейронная сеть. Мы берем входные данные (данные реального мира) и вес для умножения на входные данные, а затем возвращаем результат. Например, скажем, футбольная команда Дании забила 3 ​​мяча в своей последней игре. Учитывая вес 0,2, мы можем использовать нашу нейронную сеть, чтобы предсказать, что у Дании есть 60% шанс выиграть в следующей игре.

$ neural_network(3, 0.2)
$ => 0.6

Но как нам найти свой вес?

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

GOALS  |  WIN/LOSS
3 | 1
1 | 0
4 | 1

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

Итак, если случайное число сначала было 0,5, наш прогноз будет

3 * 0.5 = 1.5
1 * 0.5 = 0.5
4 * 0.5 = 2

С этой отправной точкой наша сеть на 50% превышает оценку для первой игры, на 50% - для второй и на 100% - для последней игры. Теперь, имея эту информацию, мы можем вернуться и изменить наш вес, чтобы уменьшить частоту ошибок при прогнозировании нашего результата. Это суть линейной регрессии, которую я не буду подробно обсуждать в этой статье. Но это должно дать вам представление о том, как мы можем определять весовые коэффициенты с помощью контролируемого обучения, снижая частоту ошибок при каждом изменении наших весовых коэффициентов и сравнивая наши прогнозы с нашими результатами.

Несколько входов

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

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

Goals Scored  |  Win/Loss Ratio  |  No. Fans
3 | 0.6 | 30,000

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

def neural_network(inputs, weights):
output = 0
for i in range(len(inputs)):
output += (inputs[i] * weights[i])
return output

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

weights = [0.2, 0.3, 0]
inputs = [ 3, 0.6, 30000]$ neural_network(inputs, weights)
$ => 0.78

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

Строительные блоки

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

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

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map