Как стать автором
Обновить
141
0
Павел Нестеров @mephistopheies

data scientist

Отправить сообщение

Локальная скорость обучения весов нейронов в алгоритме обратного распространения ошибки

Время на прочтение3 мин
Количество просмотров15K
Привет, в одной из последних лекций по нейронным сетям на курсере речь шла о том, как можно улучшить сходимость алгоритма обратного распространения ошибки в общем, и в частности рассмотрели модель, когда каждый вес нейрона имеет свою собственную скорость обучения (neuron local gain). Я давно хотел реализовать какой нибудь алгоритм, который бы автоматически настраивал бы скорость обучения сети, но все лень руки не доходили, а тут вдруг такой простой и незамысловатый способ. В этой небольшой статье я расскажу про эту модель и приведу несколько примеров того, когда эта модель может быть полезна.

Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии7

Нейронная сеть с SoftMax слоем на c#

Время на прочтение5 мин
Количество просмотров65K
Привет, в прошлой статье я рассказал про алгоритм обратного распространения ошибки и привел реализацию, не зависящую от функции ошибки и от функции активации нейрона. Было показано несколько простых примеров подмены этих самых параметров: минимизация квадрата Евклидова расстояния и логарифмического правдоподобия для сигмоидной функции и гиперболического тангенса. Данный пост будет логическим продолжение прошлого, в котором я рассмотрю немного нестандартный пример, а именно функцию активации Softmax для минимизации перекрестной энтропии. Эта модель актуальна при задаче классификации, когда необходимо получить на выходе нейросети вероятности принадлежности входного образа одному из не пересекающихся классов. Очевидно, что суммарный выход сети по всем нейронам выходного слоя должен равняться единице (так же как и для выходных образов обучающей выборки). Однако не достаточно просто нормализировать выходы, а нужно заставить сеть моделировать вероятностное распределение, и обучать ее именно этому. Кстати, сейчас на coursera.org идёт курс по нейросетям, именно он помог углубиться в понимание софтмакса, иначе я продолжал бы использовать сторонние реализации.

Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии1

Алгоритм обратного распространения ошибки с регуляризацией на c#

Время на прочтение14 мин
Количество просмотров85K
Привет. Я хочу продолжить тему реализации методов машинного обучения на c#, и в этой статье я расскажу про алгоритм обратного распространения ошибки для обучения нейронной сети прямого распространения, а также приведу его реализацию на языке C#. Особенность данной реализации в том, что реализация алгоритма абстрагирована от реализаций целевой функции (той, которую нейросеть пытается минимизировать) и функции активации нейронов. В итоге получится некий конструктор, с помощью которого можно поиграться с различными параметрами сети и алгоритма обучения, посмотреть и сравнить результат. Предполагается, что вы уже знакомы с тем, что такое искусственная нейросеть (если нет, то настоятельно рекомендую для начала изучить википедию или одну из подобных статей). Интересно? Лезем под кат.

Читать дальше →
Всего голосов 38: ↑31 и ↓7+24
Комментарии46

Кластеризация k-means с расстоянием Евклида и Махаланобиса

Время на прочтение3 мин
Количество просмотров15K
В предыдущей статье я рассказывал, как можно реализовать алгоритм k-means на c# с обобщенной метрикой. В комментах можно почитать обсуждение того, насколько целесообразно использовать разные метрики, о математической природе использования разных метрик и тому прочее. Мне тогда хотелось привести красивый пример, но не было под рукой подходящих данных. И вот сегодня я столкнулся с задачей, которая хорошо иллюстрирует преимущества использования расстояния Махаланобиса в k-means кластеризации. Подробности под катом.

Читать дальше →
Всего голосов 23: ↑19 и ↓4+15
Комментарии26

Реализация алгоритма k-means на c# (с обобщенной метрикой)

Время на прочтение6 мин
Количество просмотров34K
Всем привет. Продолжая тему того, что Andrew Ng не успел рассказать в курсе по машинному обучению, приведу пример своей реализации алгоритма k-средних. У меня стояла задача реализовать алгоритм кластеризации, но мне необходимо было учитывать степень корреляции между величинами. Я решил использовать в качестве метрики расстояние Махаланобиса, замечу, что размер данных для кластеризации не так велик, и не было необходимости делать кэширование кластеров на диск. За реализацией прошу под кат.

кат
Всего голосов 20: ↑16 и ↓4+12
Комментарии19

Реализация метода главных компонент на C#

Время на прочтение8 мин
Количество просмотров33K
Всем привет. На этой неделе в курсе по машинному обучению профессор Andrew Ng рассказал слушателям про метод главных компонент, с помощью которого можно уменьшить размерность пространства признаков ваших данных. Но к сожалению он не рассказал про метод вычисления собственных векторов и собственных чисел матрицы, просто сказал, что это сложно и посоветовал использовать матлаб/октавовскую функцию [U S V] = svd(a).

Для моего проекта мне понадобилась реализация этого метода на c#, чем я сегодня и занимался. Сам метод главных компонент очень элегантный и красивый, а если не понимать математику которая лежит за всем этим, то это можно это все назвать шаманством. Проблема вычисления собственных векторов матрицы в том, что не существует быстрого способа вычисления их точных значений, так что приходится выкручиваться. Я хочу рассказать об одном из таких способов выкрутиться, а так же приведу код на c# выполняющий эту процедуру. Прошу под кат.
кат
Всего голосов 20: ↑17 и ↓3+14
Комментарии18
2

Информация

В рейтинге
Не участвует
Откуда
Калининград (Кенигсберг), Калининградская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность