Рубрики
Без рубрики

Обучение того, как кодировать нейронные сети

Это второй пост в серии меня, пытающихся узнать что-то новое в течение короткого периода времени. Первый раз состоял из обучения …. Tagged с Neuralnetworks, Python, AI, учебником.

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

На этот раз я пытался выучить нейронные сети. Хотя мне не удалось сделать это в течение недели, по разным причинам, я получил основное понимание этого в течение всего лета и осенью 2015 года.

По Основное понимание Я имею в виду, что я наконец-то знаю, как кодировать Простые нейронные сети с нуля самостоятельно.

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

Шаг 1: нейроны и распространение вперед

Так что такое нейронная сеть? Давайте дождемся с сетевой частью и начните с одним нейроном.

Нейрон как функция; Требуется несколько входов и вычисляет вывод.

Круг ниже иллюстрирует искусственный нейрон. Его вход 5 и его выход 1. Входные данные – это сумма трех синапсов, соединяющихся с нейроном (три стрелки слева).

В дальнем левом возрасте мы видим два входных значения плюс значение смещения. Входные значения 1 и 0 (зеленые числа), в то время как смещение удерживает значение -2 (количество коричневого номера).

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

Затем два входа умножены на их так называемые веса, которые являются 7 и 3 (синие числа).

Наконец мы добавляем его со смещением и в конечном итоге с номером в этом случае: 5 (красное число). Это вход для нашего искусственного нейрона.

Затем нейрон выполняет какое-то вычисление на это число – в нашем случае функция сигмовидной, а затем выпивает вывод. Это происходит 1, как сигмоид из 5 равен 1, если мы округли число вверх (дополнительная информация о функции SIGMoid следует позже).

Если это был спам-фильтр, тот факт, что мы выводят 1 (в отличие от 0), вероятно, означает, что нейрон пометил текст как «спам».

Иллюстрация нейронной сети от Википедия.

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

Я могу настоятельно рекомендовать Видео Velch Labs на YouTube Для получения лучшего интуитивного объяснения этого процесса.

Шаг 2: Понимание сигмовидной функция

После того, как вы видели видео Welch Labs, это хорошая идея, чтобы провести некоторое время, наблюдая за Неделя 4 курса обучения машины Coursera , который охватывает нейронные сети, так как она даст вам больше интуиции того, как они работают.

Курс довольно математический, и он основан вокруг октавы, пока я предпочитаю Python. Из-за этого я не делал упражнения программирования. Вместо этого я использовал видео, чтобы помочь мне понять, что мне нужно было учиться.

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

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

Но смотреть видео, не получит вас полностью. Чтобы действительно понять это, я чувствовал, что мне нужно было кодировать его с нуля.

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

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

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

Но убедитесь, что вы понимаете, как работает сигмовидная функция.

Шаг 3: Понимание обратной передачи

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

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

Концепция называется обратной проблемой.

Это, по сути означает, что вы посмотрите на Насколько неверно Сеть догадалась, а затем корректируйте сеть весов соответственно.

Вес были голубыми числами на нашем нейроне в начале статьи.

Этот процесс возникает назад, поскольку вы начинаете в конце сети (соблюдайте, насколько неверны сети «Угадайте»), а затем переместитесь назад через сеть, при этом регулируя вес в пути, пока вы наконец не достигнете входов.

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

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

Screehehshot от Matt Mazurs Учебное пособие на обратную распространение.

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

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

Кроме того, я не могу подчеркивать этого достаточно:

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

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

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

Шаг 4: кодирование собственных нейронных сетей

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

Одна из статей, которые я тоже много узнал от того, был Нейронная сеть в 11 линиях Python по IAMTRASK . Он содержит необычайное количество сжатых знаний и концепций всего за 11 строк.

Скриншот из Учебник IAMTRASK

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

Небольшая сторона примечания: при выполнении упражнений я часто замешался векторизованными реализациями некоторых учебных пособий, поскольку нужно понять немного линейной алгебры. Еще раз я вернулся к курсу Mousera ML, поскольку 1 неделя содержит полное раздел Линейная алгебра обзор. Это поможет вам понять, как матрицы и векторы умножаются в сети.

Когда вы сделали это, вы можете продолжить с этим Учебник с диким ML, по Денни Бритс , который направляет вас через немного более надежной нейронной сети.

Скриншот из Учебник Wildml Отказ

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

Дело в том, что вы теперь лучше экспериментируете с вещами, которые вас интересуют, а не после моих советов.

Лично я в настоящее время изучаю, как использовать библиотеки Python, которые облегчают кодировать нейронные сети, такие как Theano, Lasagne и Nolearn. Я использую это, чтобы сделать вызовы на Kaggle , что является огромным веселом и большим обучением.

Удачи!

И не забудьте нажать кнопку сердца, если вам понравилась статья:)

Спасибо за прочтение! Меня зовут пер, я соучредитель Scrimba И я люблю помогать людям узнать новые навыки. Следуй за мной на Twitter и Instagram. Если вы хотите остаться на связи.

Оригинал: “https://dev.to/scrimba/learning-how-to-code-neural-networks-1mek”