machinelearningmastery.ru

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

Home

Нейронная сеть за 9 шагов

Дата публикации May 20, 2019

фотоАлина ГрубнякнаUnsplash

Проверять, выписыватьсяЧасть 2из этой серии, поскольку мы пытаемся реализовать линейную регрессию с использованием NumPy в 3 этапа.

мотивация

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

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

Коды доступны наGithub, Первоначально опубликовано наedenau.github.io,


1. Инициализация

Первый шаг. Импортировать NumPy. Шутки в сторону.

2. Генерация данных

Глубокое обучение требует данных. Хотя в Интернете доступно множество чистых наборов данных, для простоты мы сгенерируем наш собственный.а такжебу нас есть выводыа + б,а-б, а также| А-б |, Получено 10000 базовых точек.

фотоКристофер РоллернаUnsplash

3. Поезд-тест Сплиттинг

Наш набор данных разделен на обучающий (70%) и тестовый (30%) набор. Только обучающий набор используется для настройки нейронных сетей. Тестовый набор используется только для оценки производительности, когда обучение завершено.

4. Стандартизация данных

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

Эти строки могут показаться пугающими, но они довольно повторяющиеся.

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

Сейчас мы завершили процедуры предварительной обработки данных в4 шага,


5. Нейронная сеть Строительство

фотоfreestocks.orgнаUnsplash

Мы объективируем «слой», используя класс в Python. Каждый слой (кроме входного слоя) имеет весовую матрицуW, вектор смещенияби функция активации. Каждый слой добавляется в списокneural_net, Этот список будет представлять вашу полностью подключенную нейронную сеть.

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

N ^ l - количество гиперпараметров на l-м слое, L - количество слоев (исключая входной слой)

6. Вперед Распространение

Мы определяем функцию для прямого распространения с учетом определенного набора весов и смещений. Связь между слоями определяется в матричной форме как:

σ - поэлементная функция активации, верхний индекс T означает транспонирование матрицы

Функции активации определяются одна за другой. ReLU реализован какa → max (a, 0)тогда как сигмовидная функция должна возвращатьа → 1 / (1 + е ^ (- а))и его реализация оставлена ​​в качестве упражнения для читателя.

фотоХольгер ЛинкнаUnsplash

7. Обратное распространение

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

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

Это представлено частными производными∂e / ∂W(обозначается в коде dW) и∂e / ∂b(обозначается в коде БД) соответственно и может быть рассчитано аналитически.

⊙ представляет поэлементное умножение

Эти уравнения обратного распространения предполагают только одноYсравнивается Процесс обновления градиента будет очень шумным, поскольку производительность каждой итерации зависит только от одной исходной точки. Несколько датумов могут быть использованы для уменьшения шума, где∂W (y_1, y_2,…)будет означать∂W (y_1), ∂W (y_2),…и аналогично для∂b, Это не показано выше в этих уравнениях, но реализовано в приведенном ниже коде.


8. Итеративная оптимизация

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

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

W = W - learning_rate * ∂W
b = b - learning_rate * ∂b
фотоРостислав СавчиннаUnsplash
Потеря обучения должна снижаться, поскольку она повторяется

9. Тестирование

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


Еда на вынос

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

Моя реализация никоим образом не является наиболее эффективным способом построения и обучения нейронной сети. Существует так много возможностей для улучшения, но это история для другого дня. Коды доступны наGithub, Удачного кодирования!

Статьи по Теме

Спасибо за чтение! Если вы заинтересованы в машинном обучении или Python, ознакомьтесь со следующими статьями:

Машинное обучение в Python NumPy (часть 2): линейная регрессия в 3 этапа

Представляем градиентный спуск

towardsdatascience.com

Построение минимального блокчейна в Python

Понимание блокчейна по кодированию

towardsdatascience.com

Визуализация Bike Mobility в Лондоне с использованием интерактивных карт и анимации

Изучение инструментов визуализации данных в Python

towardsdatascience.com

Первоначально опубликовано наedenau.github.io,

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

Footer decor

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