Пишем свою нейронную сеть: Часть 1

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

В последнее время нейронные сети и глубокое обучение (Deep Learning) набирают все большую популярность. Чего стоит только проект deepart, который изменяет изображения в заданном стиле. Или недавняя победа алгоритма AlphaGo, основанного на нейронных сетях, над одним из сильнейших игроков в Го. Распознавание образов и звука, беспилотное управление автомобилем, поддержание диалога с человеком: искусственные нейронные сети способны практически на все.

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

  • Часть 1: Принцип работы нейронных сетей.
  • Часть 2: Обучение нейронной сети с помощью градиентного спуска.
  • Часть 3: Численная проверка градиента.
  • Часть 4: Регуляризация и предотвращение переобучения.

Читать далее Пишем свою нейронную сеть: Часть 1

Поделиться:

Один простой шаг к профессионализму в машинном обучении

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

Вы должны научиться применять алгоритмы машинного обучения на практике.

Теория не особенно поможет вам, когда надо будет выставить 16 параметров, которые требует стандартная реализация Random Forest. Значения по умолчанию, конечно, хороши для начала, но ведь в зависимости от данных какие-то из них придется менять…

Читать далее Один простой шаг к профессионализму в машинном обучении

Поделиться:

Генератор текста на основе Марковских цепей

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

 

Марковские цепи или идея работы алгоритма

Написать генератор текста совсем просто: возьмем все буквы русского алфавита, добавим к ним пробел и будем наугад выбирать символы из этого множества.

import random
random.seed(0)

russian_letters = [chr(i) for i in range(1072, 1072 + 32)]
russian_letters.append(' ')
''.join(random.choice(russian_letters) for _ in range(100))
'шъвр ящуюцн итижрйуждхюжцыфнюьргаещаяхпфдмопйьееф яжутзхнтьешфптлмлврюдеийвещспнъсьяцефзяхмпбсзочкхы'

Но есть очевидная проблема: получившийся текст, скажем так, далек от идеала. Мы получили просто последовательность символов, выбранных из генеральной совокупности (32 буквы и пробел) с равной вероятностью. И этот текст получился, неудивительно, не читаемым. Читать далее Генератор текста на основе Марковских цепей

Поделиться: