0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>В этой статье вы получите ряд разъяснений и рекомендаций, которые пригодятся вам при создании нейронной сети. Также будут предоставлены полезные ссылки для самостоятельного изучения. Материал предназначен для начинающих. Что же, не будем терять времени!</p>
1
<p>В этой статье вы получите ряд разъяснений и рекомендаций, которые пригодятся вам при создании нейронной сети. Также будут предоставлены полезные ссылки для самостоятельного изучения. Материал предназначен для начинающих. Что же, не будем терять времени!</p>
2
<h2>Шаг 1. Поговорим о нейронах и методах прямого распространения</h2>
2
<h2>Шаг 1. Поговорим о нейронах и методах прямого распространения</h2>
3
<p>Прежде чем начать разговор о<strong>нейросетях</strong>и о том, как создать и обучить нейросеть, нужно сначала немного разобраться с тем, что такое один нейрон. Здесь всё достаточно просто: нейрон принимает несколько значений, а возвращает только одно, что значит, что он похож на функцию.</p>
3
<p>Прежде чем начать разговор о<strong>нейросетях</strong>и о том, как создать и обучить нейросеть, нужно сначала немного разобраться с тем, что такое один нейрон. Здесь всё достаточно просто: нейрон принимает несколько значений, а возвращает только одно, что значит, что он похож на функцию.</p>
4
<p>Теперь для наилучшего понимания давайте посмотрим на картинку ниже. Там показан круг - это искусственный нейрон. Что он делает? Он получает 5, а возвращает 1. Под вводом понимается сумма трёх синапсов, соединённых с нейроном (это три стрелки слева).</p>
4
<p>Теперь для наилучшего понимания давайте посмотрим на картинку ниже. Там показан круг - это искусственный нейрон. Что он делает? Он получает 5, а возвращает 1. Под вводом понимается сумма трёх синапсов, соединённых с нейроном (это три стрелки слева).</p>
5
<p>В левой части у нас находятся два входных значения (выделены зелёным цветом) и одно смещение (выделено коричневым цветом).</p>
5
<p>В левой части у нас находятся два входных значения (выделены зелёным цветом) и одно смещение (выделено коричневым цветом).</p>
6
<p>Входные данные могут быть численными представлениями 2-х различных свойств. К примеру, когда создаёшь спам-фильтр, они могут означать наличие больше чем одного слова, написанного прописными буквами, и наличие слова "Виагра".</p>
6
<p>Входные данные могут быть численными представлениями 2-х различных свойств. К примеру, когда создаёшь спам-фильтр, они могут означать наличие больше чем одного слова, написанного прописными буквами, и наличие слова "Виагра".</p>
7
<p>Также следует понимать, что входные значения умножаются на собственные так называемые "веса" - в нашем случае это 7 и 3 (выделены синим).</p>
7
<p>Также следует понимать, что входные значения умножаются на собственные так называемые "веса" - в нашем случае это 7 и 3 (выделены синим).</p>
8
<p>Позже полученные значения складываются со смещением, и получается число 5, которое у нас выделено красным. Именно так и выглядит<strong>ввод искусственного нейрона</strong>.</p>
8
<p>Позже полученные значения складываются со смещением, и получается число 5, которое у нас выделено красным. Именно так и выглядит<strong>ввод искусственного нейрона</strong>.</p>
9
<p>Идём далее. Нейрон выполняет вычисление, выдавая выходное значение. Мы получили 1, так как именно единице равно округлённое значение<strong>сигмоиды</strong>в точке 5. Если, опять же, вспомнить про спам-фильтр, то факт вывода единицы означал бы, что текст был помечен нейроном в качестве спама.</p>
9
<p>Идём далее. Нейрон выполняет вычисление, выдавая выходное значение. Мы получили 1, так как именно единице равно округлённое значение<strong>сигмоиды</strong>в точке 5. Если, опять же, вспомнить про спам-фильтр, то факт вывода единицы означал бы, что текст был помечен нейроном в качестве спама.</p>
10
<p>Объединив эти<strong>нейроны</strong>, вы получите в итоге прямо распространяющуюся<strong>нейросеть</strong>. В ней процесс идёт от ввода к выводу и через нейроны, которые соединены синапсами.</p>
10
<p>Объединив эти<strong>нейроны</strong>, вы получите в итоге прямо распространяющуюся<strong>нейросеть</strong>. В ней процесс идёт от ввода к выводу и через нейроны, которые соединены синапсами.</p>
11
<p>Для наилучшего понимания этого процесса посмотрите<a>серию видео</a>на английском, от Welch Labs.</p>
11
<p>Для наилучшего понимания этого процесса посмотрите<a>серию видео</a>на английском, от Welch Labs.</p>
12
<h2>Шаг 2. Сигмоида</h2>
12
<h2>Шаг 2. Сигмоида</h2>
13
<p>Прежде чем приступить к следующему шагу, было бы неплохо ознакомиться с 4-й неделей курса по<a>Machine Learning от Coursera</a>- она как раз посвящена нейросетям и помогла бы вам разобраться в особенностях и принципах их работы. Да, этот курс слишком сильно углубляется в математику, плюс основан на Octave, хотя многие предпочитают язык программирования Python. Но все же там можно почерпнуть много полезных знаний.</p>
13
<p>Прежде чем приступить к следующему шагу, было бы неплохо ознакомиться с 4-й неделей курса по<a>Machine Learning от Coursera</a>- она как раз посвящена нейросетям и помогла бы вам разобраться в особенностях и принципах их работы. Да, этот курс слишком сильно углубляется в математику, плюс основан на Octave, хотя многие предпочитают язык программирования Python. Но все же там можно почерпнуть много полезных знаний.</p>
14
<p>Вернёмся к нашей<strong>сигмоиде</strong>. Дело в том, что она фигурирует во многих аспектах нейронных сетей. Её описание вы можете посмотреть, к примеру,<a>здесь</a>. Но на одной теории, сами понимаете, далеко не уедешь. Именно поэтому для наилучшего понимания следует создавать её самостоятельно. Чтобы это сделать, необходимо написать реализацию алгоритма<a>логистической регрессии</a>, использующего<strong>сигмоиду</strong>.</p>
14
<p>Вернёмся к нашей<strong>сигмоиде</strong>. Дело в том, что она фигурирует во многих аспектах нейронных сетей. Её описание вы можете посмотреть, к примеру,<a>здесь</a>. Но на одной теории, сами понимаете, далеко не уедешь. Именно поэтому для наилучшего понимания следует создавать её самостоятельно. Чтобы это сделать, необходимо написать реализацию алгоритма<a>логистической регрессии</a>, использующего<strong>сигмоиду</strong>.</p>
15
<p>Если честно, это может занять целый день, причём результат будет далёк от идеального. Вот, к примеру, как с этим справился<a>Per Harald Borgen</a>, англоязычная статья которого стала основой материала, который вы сейчас читаете. Но главное здесь не в том, чтобы сделать всё идеально, а в том, чтобы разобраться,<strong>как всё работает</strong>. И понять, как устроена сигмоида.</p>
15
<p>Если честно, это может занять целый день, причём результат будет далёк от идеального. Вот, к примеру, как с этим справился<a>Per Harald Borgen</a>, англоязычная статья которого стала основой материала, который вы сейчас читаете. Но главное здесь не в том, чтобы сделать всё идеально, а в том, чтобы разобраться,<strong>как всё работает</strong>. И понять, как устроена сигмоида.</p>
16
<h2>Шаг 3. О методе обратного распространения ошибки</h2>
16
<h2>Шаг 3. О методе обратного распространения ошибки</h2>
17
<p>Понимание принципа работы нейронной сети, начиная от ввода, заканчивая выводом, вряд ли вызовет у вас затруднения. Намного тяжелее понять, каким образом<strong>нейронная сеть</strong>обучается, используя для этого наборы данных. Один из применяемых принципов называют<a>методом обратного распространения ошибки</a>.</p>
17
<p>Понимание принципа работы нейронной сети, начиная от ввода, заканчивая выводом, вряд ли вызовет у вас затруднения. Намного тяжелее понять, каким образом<strong>нейронная сеть</strong>обучается, используя для этого наборы данных. Один из применяемых принципов называют<a>методом обратного распространения ошибки</a>.</p>
18
<p>Если говорить коротко, то вы оцениваете, насколько сильно ошиблась нейросеть, а потом изменяете вес входных значений (на первой картинке это синие числа).</p>
18
<p>Если говорить коротко, то вы оцениваете, насколько сильно ошиблась нейросеть, а потом изменяете вес входных значений (на первой картинке это синие числа).</p>
19
<p>Собственно говоря, процесс движется от конца к началу, ведь мы начинаем с конца сети и смотрим, как сильно догадка сети отклоняется от истины. Затем мы двигаемся назад, изменяя веса, и так до тех пор, пока не дойдём до ввода. А для вычисления всего этого вручную вам потребуется знание<strong>математического анализа</strong>. Однако вы можете на заморачиваться и использовать библиотеки, которые всё посчитают за вас.</p>
19
<p>Собственно говоря, процесс движется от конца к началу, ведь мы начинаем с конца сети и смотрим, как сильно догадка сети отклоняется от истины. Затем мы двигаемся назад, изменяя веса, и так до тех пор, пока не дойдём до ввода. А для вычисления всего этого вручную вам потребуется знание<strong>математического анализа</strong>. Однако вы можете на заморачиваться и использовать библиотеки, которые всё посчитают за вас.</p>
20
<p>Если вас интересуют англоязычные источники, которые помогут разобраться в данном методе, то хорошо известны следующие: •<a>A Step by Step Backpropagation Example</a>; •<a>Hacker’s guide to Neural Networks</a>; •<a>Using neural nets to recognize handwritten digits</a>.</p>
20
<p>Если вас интересуют англоязычные источники, которые помогут разобраться в данном методе, то хорошо известны следующие: •<a>A Step by Step Backpropagation Example</a>; •<a>Hacker’s guide to Neural Networks</a>; •<a>Using neural nets to recognize handwritten digits</a>.</p>
21
<p>Однако учтите, что читая первые 2 статьи, вам обязательно придётся кодить самому, что поможет в дальнейшем. Избегать этого не рекомендуется, ведь в нейронных сетях невозможно разобраться, не практикуя. В 3-й статье находится материал размером с книгу, больше напоминающую энциклопедию. Зато в ней даны подробные разъяснения важнейших принципов работы<strong>нейронных сетей</strong>. К примеру, вы изучите такие определения, как<strong>функция стоимости</strong>,<strong>градиентный спуск</strong>, функция активации, скрытые слои, выходные и входные слои и т. д. После освоения такого материала вы достигнете более высокого уровня понимания.</p>
21
<p>Однако учтите, что читая первые 2 статьи, вам обязательно придётся кодить самому, что поможет в дальнейшем. Избегать этого не рекомендуется, ведь в нейронных сетях невозможно разобраться, не практикуя. В 3-й статье находится материал размером с книгу, больше напоминающую энциклопедию. Зато в ней даны подробные разъяснения важнейших принципов работы<strong>нейронных сетей</strong>. К примеру, вы изучите такие определения, как<strong>функция стоимости</strong>,<strong>градиентный спуск</strong>, функция активации, скрытые слои, выходные и входные слои и т. д. После освоения такого материала вы достигнете более высокого уровня понимания.</p>
22
<h2>Шаг 4. Создание своей нейросети. Как написать нейронную сеть? Пишем и обучаем</h2>
22
<h2>Шаг 4. Создание своей нейросети. Как написать нейронную сеть? Пишем и обучаем</h2>
23
<p>Читая разные статьи и руководства, вы так или иначе будете создавать небольшие нейросети. Сегодня сказано и рассказано много о соответствующих моделях, задачах и способах их решения. Некоторые статьи являются сложными, а некоторые простыми, понятными для любого человека. И все это очень эффективно для процесса обучения.</p>
23
<p>Читая разные статьи и руководства, вы так или иначе будете создавать небольшие нейросети. Сегодня сказано и рассказано много о соответствующих моделях, задачах и способах их решения. Некоторые статьи являются сложными, а некоторые простыми, понятными для любого человека. И все это очень эффективно для процесса обучения.</p>
24
<p>Пример очень полезной информации можно найти<a>здесь</a>. В этом материале удивительное количество знаний сжато до 11 строк кода.</p>
24
<p>Пример очень полезной информации можно найти<a>здесь</a>. В этом материале удивительное количество знаний сжато до 11 строк кода.</p>
25
<p>Прочитав вышеупомянутую статью и реализовав приведённые в ней примеры самостоятельно, вы закроете много пробелов в знаниях, а когда всё получится, почувствуете себя суперчеловеком)).</p>
25
<p>Прочитав вышеупомянутую статью и реализовав приведённые в ней примеры самостоятельно, вы закроете много пробелов в знаниях, а когда всё получится, почувствуете себя суперчеловеком)).</p>
26
<p>Что ещё? Ну, при реализации многих примеров используются векторные вычисления, поэтому понимание линейной алгебры тоже потребуется. Если же интересуют нейронные сети посложнее, то вот вам новое<a>руководство</a>.</p>
26
<p>Что ещё? Ну, при реализации многих примеров используются векторные вычисления, поэтому понимание линейной алгебры тоже потребуется. Если же интересуют нейронные сети посложнее, то вот вам новое<a>руководство</a>.</p>
27
<p>С его помощью вы сможете как написать свою нейросеть, так и поэкспериментировать с уже созданными. Довольно забавным бывает найти нужный набор данных, а потом проверить разные предположения с помощью нескольких нейросетей.</p>
27
<p>С его помощью вы сможете как написать свою нейросеть, так и поэкспериментировать с уже созданными. Довольно забавным бывает найти нужный набор данных, а потом проверить разные предположения с помощью нескольких нейросетей.</p>
28
<p>Кстати, если интересуют хорошие наборы данных, вы можете посетить<a>этот сайт</a>.</p>
28
<p>Кстати, если интересуют хорошие наборы данных, вы можете посетить<a>этот сайт</a>.</p>
29
<p>Чем раньше вы начнёте свои эксперименты, тем лучше. Будет кстати и изучение Python-библиотек для программирования нейронных сетей: Theano, Lasagne, Nolearn. А ещё лучше - попробовать записаться на курс<a>"Нейронные сети на Python"</a>в OTUS. С его помощью вы освоите<strong>архитектуру нейронных сетей</strong>, узнаете методы их обучения и общие особенности реализации. Остается лишь решиться и приняться за дело.</p>
29
<p>Чем раньше вы начнёте свои эксперименты, тем лучше. Будет кстати и изучение Python-библиотек для программирования нейронных сетей: Theano, Lasagne, Nolearn. А ещё лучше - попробовать записаться на курс<a>"Нейронные сети на Python"</a>в OTUS. С его помощью вы освоите<strong>архитектуру нейронных сетей</strong>, узнаете методы их обучения и общие особенности реализации. Остается лишь решиться и приняться за дело.</p>
30
<p><em>По материалам статьи<a>"Learning How To Code Neural Networks"</a>.</em></p>
30
<p><em>По материалам статьи<a>"Learning How To Code Neural Networks"</a>.</em></p>
31
31