Войти
ФлеймФорумОбщее

Deep learning на пальцах. (3 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#30
7:30, 6 мар. 2019

Ivashka
Таким гортанным способом пол британцев говорит. Две минуты напрягает, потом привыкаешь.
Я вспомнил производные и градиент по этим видео.


#31
7:32, 6 мар. 2019

Лекция 3 - Нейронные сети

Ключевая лекция курса по расписанию - 6-го марта в 8:40 Мск (12:40 Нск, 9:40 вечера 5-го по PST)

После этой лекции можно решать вторую часть первого задания, Linear Classifier:
https://github.com/sim0nsays/dlcourse_ai/tree/master/assignments/assignment1

Начали собирать все ссылки на лекции, семинары и задания на сайте dlcourse.ai, они там будут появляться вскоре после выкладывания на youtube (по ссылке видео доступны сразу же).
Контент семинаров в НГУ выкладывается в качестве помощи с выполнением заданий. Если у вас и так все получается, они вам не нужны, но если нет - должны помочь.

https://www.youtube.com/watch?v=kWTC1NvL894

#32
6:36, 7 мар. 2019

wat
3-я лекция просто отличная. Наконец то мясо пошло.

#33
10:59, 7 мар. 2019

Хм, да, третья лекция конкретная и по существу. Даже всё понял, остатков знаний через года своего курса институтского более чем хватило.
Даже удивило, что тут всё настолько просто на самом деле. Думал что в корне этого самого backpropagation лежит что-то намного более заумное. А тут просто производные считаются численно по быстрячку. Вполне доступно.
Странно пока только кажется, что градиентного спуска хватает для сетей с хорошими результатами типа того же Go, но может следующие уроки что-то прояснят.

#34
22:12, 7 мар. 2019

=A=L=X=
Ну, я так понимаю, градиентный спуск — это один из фундаментов диплернинга.

Я, вот, кстати, его уже не помнил из аналитической математики, а помню почему-то из численных методов. > 20 лет с универа. И табличные производные — очень смутно. С числовыми, конечно, работаю часто. Но тема не сложная, освоил с тех двух видео с предыдущей страницы.

#35
(Правка: 2:40) 2:09, 8 мар. 2019

Добавлю, что производные все таки считаются "аналитически". В этом состоит пойнт всех DL фрэймворков -  TensorFlow/Torch, по описанию модели (по сути функции), автоматически посчитать "аналитический" градиент https://en.wikipedia.org/wiki/Automatic_differentiation и затем загнать это все в GPU. В этом кстати состоит одна из ключевых особенностей DL моделей, они имеют настолько нелинейную и сложную структуру, что ничего кроме вариаций банального градиентного спуска к ним слабо применимо, по сути они требуют лишь локальную непрерывность для составных частей, из которых потом комбинированием собирают DL монстров. Да и то даже  "такую математическую банальщину" (градиентный спуск) приходится пару суток считать на топовом GPU x4 для не слишком сложной модели.

#36
3:04, 8 мар. 2019

wat
> Я, вот, кстати, его уже не помнил из аналитической математики, а помню
> почему-то из численных методов.

Так он к аналитической математике вроде и не имеет отношения.
У меня просто название специальности было "математическое обеспечение и применение ЭВМ в металлургии".
Всякие регрессионные анализы, методы оптимизации и симплекс-методы у меня были фиче-листом спец-курсов по специальности.
При том, что мощного матана дальше производных/интегралов по нескольким переменным никогда и не было.
Фактически я теперь внезапно понимаю, что диплёнинг у нас мог бы быть факультативом в рамках пройденного. Ну по крайней мере если третья лекция - действительно самое матанистое из всего что будет.

thevlad
> производные все таки считаются "аналитически"

Ну да, строго говоря численно это то как он объяснял они решаются сложновычислительно для проверки того что всё правильно.
Разбор графа функции - это по сути своей аналитика. Я просто не ожидал что сердцем является настолько простой лексический разбор формулы.

#37
3:26, 8 мар. 2019

Для меня лично все эти градиентные спуски и симплекс-методы были навсегда заклеймены проклятием "локального оптимума". И чем сложнее модель - тем явственнее это проклятье. Родовое так сказать.
И тут очень удивительно, что оно "хорошо работает" на такой сложной вещи как нейросеть. Однако та нейросеть (один слой) что он описывает штука действительно сама по себе очень линейная. Возможно поэтому. Но вот когда несколько слоёв накидывают - разве оно не должно закопать все линейности к чёрту? Хм...

#38
(Правка: 3:51) 3:34, 8 мар. 2019

=A=L=X=
>И тут очень удивительно, что оно "хорошо работает" на такой сложной вещи как нейросеть. Однако та нейросеть >(один слой) что он описывает штука действительно сама по себе очень линейная. Возможно поэтому. Но вот когда >несколько слоёв накидывают - разве оно не должно закопать все линейности к чёрту? Хм...
На самом деле именно так и думали долгое время, до появления DL, поэтому это направление особо не развивалось, то что Хинтон в 2015 запустил на паре GPU, вполне можно было гонять на суперкомпьютерах, начала 2000-х если еще не раньше, просто никто не верил что это будет работать. Но как оказалось с приходом DL, интуиция примерно такая, что чем больше размерность пространства, тем больше становится "пологих" выходов из точек, которые при меньшей размерности были бы "ямами" локального минимума, в которых застревал градиентный спуск.

#39
(Правка: 3:52) 3:51, 8 мар. 2019

thevlad
> в кготорых застревал градиентный спуск

Забавно, если градиентный спуск работает, то почему симплекс-метод по видимому не работает. Ведь ему даже производные считать не надо.
P.S.
Хотя наверное там вычислительно сложно задать базу симплекса, т.к. надо сперва посчитать функцию во всех вершинах.

#40
(Правка: 4:06) 3:57, 8 мар. 2019

=A=L=X=
что ты подразумеваешь под "симплекс-метод"? стандартное https://en.wikipedia.org/wiki/Simplex_algorithm ? если да, т о это как-то немного разные вещи "одно пресное, другое соленое", пространство решений в симплекс методе всегда выпуклое, при этом добавляются ограничения(constraints), без ограничений, стандартный градиентный спуск сходился бы гораздо быстрее симплекса.

все вспомнил, https://en.wikipedia.org/wiki/Nelder%E2%80%93Mead_method
с этим просто, во-первых он вычислительно гораздо менее оптимален, во-вторых градиентный спуск имеет больше информации о локальных свойствах функции, поэтому имеет больше шансов сойтись быстрее, или найти выходи из "локального минимума"

Добавлю, если у тебя есть градиент то тебе его надо посчитать в одной точки, если у функции N параметров то это примерно N операций, для amoeba search тебе надо посчитать базис симплекса размерности N, а значит N*N, если у тебя параметров несколько десятков тысяч, то это становится мало реальным занятием.

#41
(Правка: 4:29) 4:28, 8 мар. 2019

thevlad
> а значит N*N

Просто N. У симплекса N+1 вершин в N-мерном пространстве, функция считается в каждой вершине, а потом каждый шаг совершается довычислением еще одной вершины.
Но есть еще проблема редукции симплекса, когда он сжимается в размерах - опять надо считать N+1 за вычетом одной уже известной вершины, возможно. Хотя может тут есть какие то оптимизации сжимающие его по ходу предыдущих шагов - не уверен.

#42
(Правка: 4:32) 4:32, 8 мар. 2019

=A=L=X=
> Просто N. У симплекса N+1 вершин в N-мерном пространстве, функция считается в
> каждой вершине, а потом каждый шаг совершается довычислением еще одной вершины.
стой, ну как. Если у тебя O(N) вершин, и каждая вершина вычисляется, за O(N) от количества параметров функции, то общая вычислительная сложность только расчета симплекса O(N^2)

#43
(Правка: 5:06) 4:37, 8 мар. 2019

thevlad
> то общая вычислительная сложность

Ааа, ты про общую сложность. Ну так то да.
Кстати точно, посчитав градиенты мы же сразу считай и вычислили значение функции в новой точке, так что у симплекса преимуществ то и нету.
P.P.S.
Хотя нет, сделав шаг по градиенту надо всё честно пересчитать, ибо это шагаем же. Но на общем фоне да, преимущества симплекса похоже что съедаются без остатка.
P.S.
Наверное по курсу и объяснялось что он интересен только там где есть проблемы с вычислением производных, но я уже забыл.

#44
8:54, 8 мар. 2019

> на пальцах
Посмотрел минут 40 первого видоса, ничего не понял.

Страницы: 1 2 3 4 5 6 Следующая »
ФлеймФорумОбщее