@bigdata_ru

Страница 17 из 327
Andrey
07.10.2016
12:11:39
Обновления весов-то происходят послойно, но по готовым формулам, полученным как описано выше

Леонид
07.10.2016
12:14:05
yopp
07.10.2016
12:42:35
Так, переложил

объяснять лучше не на самых эффективных формулах, а на простых )
Проблема в том, что на простых формулах всё легко, а когда пытаешься применить эти «знания» на практике, случается большой упс

Google
yopp
07.10.2016
12:45:59
Да
Окей, мы нашли функцию потерь. В рассматриваем случае её значение 0.2304

«Производную функции потерь как функции от значения активации последнего нейрона»

Тоесть теперь надо найти f' от z?

Леонид
07.10.2016
12:52:01
А разобрать чужой код - не подходит?

yopp
07.10.2016
12:52:16
Я принцип понять хочу, а не реализацию

Иначе я потом буду как мартышка, чот делать но не понимать физического смысла

/dev
07.10.2016
12:58:10
Вот, разжевано

yopp
07.10.2016
13:03:15
Считайте что у меня три класса церковно-приходской школы и сертификат дьякона.

/dev
07.10.2016
13:04:55
Ну а что ты без матана здесь хотел?

yopp
07.10.2016
13:06:18
Начинается

Леонид
07.10.2016
13:08:42
yopp
07.10.2016
13:09:12
Физический смысл производных, предположим, понимаю: это скорость изменения некоторой функции

Google
Timur
07.10.2016
13:18:37
Леонид
07.10.2016
13:20:00
Я принцип понять хочу, а не реализацию
Принцип такой. Считаем нейронку многомерным пространством. Считаем производную вдоль одной оси - знаем, как поменять значение на этой оси (то есть, какой-то вес), что бы кост-функция уменьшилась. Backpropagation - это способ, как приблизительно считать такие производные.

Не единственный, кстати.

Леонид
07.10.2016
13:21:52
Как конкретно он их считает - это уже матан. И проще всего это понимать именно из матана, а не с помощью аналогий из физики. Если я где-то ошибся, уважаемые участники меня поправят

Или веса + входы?
Веса. Но на принцип не вариант

*не влияет

yopp
07.10.2016
13:23:47
Окей, у меня в моём случае 8 осей

Что такое кост-функция?

Это то что Андрей называл как функцию потерь?

Andrey
07.10.2016
13:26:25
Да

Леонид
07.10.2016
13:26:29
Ну да.

yopp
07.10.2016
13:26:34
Так, окей.

Пойдём от одного нейрона. У него есть вход, у входа есть 1 вес, есть линейная активационная функция s(x) = 1x, есть выход.

Леонид
07.10.2016
13:28:19
Она может быть любая. Это важно понимать для понимания принципа. Среднеквадратичное отклонение берут потому, что оно удобно для всяких производных. Закона, что нужно брать именно его - нет, можно другую взять.

yopp
07.10.2016
13:30:00
Будем считать что мы хотим его научить умножать на 2. Набор для обучения i = [1,2,3] t = [2,4,6]. Начальный вес пусть будет 0.01

получается нейрон описывается как n(i, w) = s(i * w)

Леонид
07.10.2016
13:31:02
Активационную функцию берут сигмоиду тоже для удобства. Можно взять линейную, как ты предложил, но не получится применить стандартные подходы

yopp
07.10.2016
13:31:17
Не торопись

Google
Леонид
07.10.2016
13:31:53
Набор со ошибкой

yopp
07.10.2016
13:32:23
упс, да

yopp
07.10.2016
13:32:26
поправил

Значит, для начала посмотрим что у нас получается для первого примера: i = 1, t = 2, w = 0.01 n(1, 0.01) = s(1*0.01) = 1*0.01 = 0.01

/dev
07.10.2016
13:33:31
Другой вопрос, что реально не надо знать точный градиент, особенно в стохастической оптимизации

yopp
07.10.2016
13:35:18
Расчитываем ошибку используя квадратичную функцию потерь m: m(t, n) = (t - n)^2

в нашем случае это будет m(2, 0.01) = (2 - 0.01)^2 = 0.9801, так?

Леонид
07.10.2016
13:38:39
1.99 в квадрат возвел с ошибкой

А так - да

yopp
07.10.2016
13:39:19
Ой. Да: 3.9601

Так, я щас в терминах слегка запустался. Квадратичное отклонение это Standard Deviation?

Tsimur
07.10.2016
13:42:38
да

правильнее вроде среднеквадратичное :)

yopp
07.10.2016
13:43:44
Гхм, тогда я чота совсем перестал понимать, почему возведение в степень если stdev это квадратный корень от variance?

Леонид
07.10.2016
13:44:31
Да, ты можешь посчитать ответ твоего нейрона для всех примеров, а не только для одного. И, соответственно, сложить квадраты ошибок и поделить на количество примеров

Как же длинно это все на русском описывается )

yopp
07.10.2016
13:48:30
Так (t - n)^2 это же (t - n)^2/1 что есть variance

а stdev это корень от variance

Google
yopp
07.10.2016
13:49:28
Ага, окей, это значит потенциальный разброс значений в некотором ряду. Окей

Дисперсия, во

Окей, посчитаем дальше: i = 2, t = 4, w = 0.01 n(4, 0.01) = s(4*0.01) = 1*0.04 = 0.04 m(4, 0.04) = (4 - 0.04)^2 = 15.6816

Если считать для двух примеров, то будет: ((2 - 0.01)^2 + (4 - 0.04)^2)/2 = 9.82085

Леонид
07.10.2016
13:55:57
Лучше mnist распознавать здесь, в чате ). Будет такая медленная-медленная нейронка на человеческих процессорах )

yopp
07.10.2016
13:58:54
Чтобы задать нейросеть, нужно настроить ее веса. Будем делать это, оптимизируя среднеквадратичную ошибку.

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

Дальше идёт фраза с которой меня начинают терять: Для настройки весов нам понадобятся производные функционала по весам

Леонид
07.10.2016
14:02:04
Да. Мы можем считать, что у нас есть функция N(w), которая нам и выдает 9.8 И нам нужно подобрать такие w, что бы функция выдала ноль или близко к этому.

В математике это называется - найти минимум функции. Он не всегда бывает, но в нашей функции - квадрат в конце, поэтому минимум точно есть

yopp
07.10.2016
14:03:23
Вспомни, что такое градиентный спуск
Это попытка найти минимум какой-то функции

Леонид
07.10.2016
14:03:58
А вот для поиска минимума, у нас есть несколько вариантов. Градиентный спуск - один из них

yopp
07.10.2016
14:07:51
ммм, а градиент это и есть приращение

он-же slope, он-же есть смысл производной

Так, ощущение что мы уже где-то близко

Так, возвращаемся к примеру: n(i, w) = s(i * w); s(x) = 1x n(i, w) = 1*(i * w) = i * w

почему мы рассматриваем N(w), а не n(i,w)?

Леонид
07.10.2016
14:15:23
Потому что обучающие примеры - константа

Google
Леонид
07.10.2016
14:16:21
Они не меняются, пока мы обучаем нейронку. И правильные ответы не меняются. Меняются только веса. То есть наша функция - это функция весов

yopp
07.10.2016
14:16:51
Резонно

Леонид
07.10.2016
14:17:57
И нам нужно найти на графике этой функции точку, где она минимальна. А потом линейкой провести линию к осям и узнать W :) Это если к графическому смыслу свести

yopp
07.10.2016
14:18:35
Так, щас я вооружусь табличным процессором

Окей, вооружился: https://yopp.in/X7y

Jim
07.10.2016
14:26:10
Посоны, есть база хелпдеска, небольшая - порядка 20к записей, хочу сговнякать сервис который будет рекомендовать для новых заявок тип. Что лучше подойдёт для решениях этой задачи? Инструментов множество

Пока смотрю в сторону питона, но там тоже полно всякого

Может уже есть готовые решения?

yopp
07.10.2016
14:30:30
Если мы рассматриваем только весы

Как быть с тем, что результат функции нейрона зависит от i?

m(t, n) = (t - n)^2, где n наш нейрон

yopp
07.10.2016
14:36:48
Квадратов чего?

Леонид
07.10.2016
14:37:20
Квадратов разницы между правильным ответом и посчитанным

yopp
07.10.2016
14:37:28
Так, variance

у нас был вес 0.01, мы variance посчитали для всех примеров

Леонид
07.10.2016
14:37:53
А что бы посчитать среднее, нужно сначала посчитать все нейроны

yopp
07.10.2016
14:38:03
Мы сейчас один нейрон рассматриваем

Страница 17 из 327