Во-первых, десятая часть пути! Ву!

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

В-третьих, мужик, вот код, как и обещал. Это нейронная сеть из девяти линий. Это взято из этой статьи чудесно талантливого Майло Спенсера-Харпера: https://medium.com/technology-invention-and-more/how-to-build-a-simple-neural-network-in-9 -lines-of-python-code-cc8f23647ca1

from numpy import exp, array, random, dot
training_set_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]])
training_set_outputs = array([[0, 1, 1, 0]]).T
random.seed(1)
synaptic_weights = 2 * random.random((3, 1)) — 1
print(synaptic_weights)
for iteration in range(10000):
output = 1 / (1 + exp(-(dot(training_set_inputs, synaptic_weights))))
synaptic_weights += dot(training_set_inputs.T, (training_set_outputs — output) * output * (1 — output))
print(1 / (1 + exp(-(dot(array([1, 0, 0]), synaptic_weights)))))

Это дает следующий результат:

[[-0.16595599]
[ 0.44064899]
[-0.99977125]]
[ 0.99999991]

Он быстрый и элегантный и учит основным принципам: входы, выходы, прямой проход, обратное распространение, эпохи, веса, обновления веса… Я могу экстраполировать на градиентный спуск, если хочу.

Если, однако, я обновлю код следующим образом:

from numpy import exp, array, random, dot
training_set_inputs = array([[0, 0, 2], [2, 2, 2], [2, 0, 2], [0, 2, 1]])
training_set_outputs = array([[0, 2, 2, 0]]).T
random.seed(1)
synaptic_weights = 2 * random.random((3, 1)) — 1
print(synaptic_weights)
for iteration in range(10000):
output = 1 / (1 + exp(-(dot(training_set_inputs, synaptic_weights))))
synaptic_weights += dot(training_set_inputs.T, (training_set_outputs — output) * output * (1 — output))
print(1 / (1 + exp(-(dot(array([2, 0, 0]), synaptic_weights)))))

Я получаю такой вывод:

[[-0.16595599]
[ 0.44064899]
[-0.99977125]]
[ 0.99993704]

Я полностью ожидал, что там будет 1.9999. или 1,98. Что-то, чтобы отразить тот факт, что я обновил все до 2. Итак, когда я использую реальные данные из футбольных игр, чтобы попытаться предсказать очки на основе ярдов и первых падений:

from numpy import exp, array, random, dot
training_set_inputs = array([[27,138,94],[16,160,138],[30,247,182],[20,269,65]])
training_set_outputs = array([[8,20,24,9]]).T
random.seed(1)
synaptic_weights = 2 * random.random((3, 1)) — 1
print(synaptic_weights)
for iteration in range(10000):
output = 1 / (1 + exp(-(dot(training_set_inputs, synaptic_weights))))
synaptic_weights += dot(training_set_inputs.T, (training_set_outputs — output) * output * (1 — output))
print(1 / (1 + exp(-(dot(array([17,177,104]), synaptic_weights)))))

И получи вот это:

[[-0.16595599]
[ 0.44064899]
[-0.99977125]]
[ 3.09880060e-13]

Мой пример бесполезен, потому что вывод тупой.

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

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

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

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

# 100DaysOfML

#Искусственный интеллект

#Машинное обучение

#DeepLearning