Pull to refresh
4
0

Пользователь

Send message

Без обид, но я вообще не понимаю к чему этот комментарий.


Остальные мои вопросы тоже оставите без ответа?

Я извиняюсь, но можете отвечать на мой коммент? Не очень удобно отслеживать ваши ответы


Да забудьте вы о них. it's wrong way.

Вы не ответили на мой вопрос. И да, было бы круто если бы вы объяснили почему это it's wrong way. Вы говорите что можно не обучать первые слои, так почему бы не проверить это утверждение на практике, на устоявшихся задачах? Если это не работает на стандартных задачах, или работает не оч. хорошо, то выходит что ваше утверждение не верно?


Я не говорил о втором слое. RL первого.
https://habr.com/ru/post/508482/#comment_21786812
Только мы хардкодим первые слои, а не обучаем.

Думал что вы говорите о первых (1, 2, 3) слоях.


Тогда не стоит и писать о нем.

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


И, я так понимаю, мнение отличное от вашего вы слышать не хотите?)

Я хочу услышать аргументированные ответы на мои технические вопросы.


В это проблема ученых степеней — обладатели их считают, что все понимают в этом мире.
Математика, которой в том числе описываются и ИНС, не полностью отражает RealWorld.
Вы, наверное, считаете что backpropagation — оптимизации непрерывных ф-ий. Так?

Учеными степенями не обладаю, с реальными задачами требующими DL/CV и н-го количества костылей сталкиваюсь ежедневно.


Вы, наверное, считаете что backpropagation — оптимизации непрерывных ф-ий. Так?

То что называют backpropagation в современном DL это просто взятие vector-jacobian product от ф-ии ошибки, это еще не сама оптимизация. И да, градиентными методами плохо, но можно оптимизировать и разрывные не всюду гладкие ф-ии, но совсем без гарантий.

Пробовал. А в DL сколько карт? Процесс обучения первого слоя уже не нужен.

Что подразумеваете под картой? Карты активации? Если да, то на выходе слоя, или вообще всего?


И как результаты на MINST/ImageNet/COCO? Как ваши hardcoded фильтры работают с разными каналами? Если что, то выигрыш от необучаемого первого слоя почти никакой. Этот слой почти ничего не стоит сам по себе (благо входов мало).


Что хардкодить во втором слое — большой вопрос.


Впервые слышу. Есть какие то реальные примеры использования в промышленных масштабах?

Не особо интересовался, если честно под мои задачи хватает оффлайн обучения. Собственно если вы продвигаете свой подход с динамическим обучением, то стоит ознакомится с существующими работами.


А говорят — мы отстали. Я использовал ML раньше BD!))

Да много кто использовал. Но у BD безумно крутые результаты, а у вас? К слову, я не уверен что они используют ML для чего-то кроме CV задач.


Одни DS говорят одно, другие — как вы. Вы DS?

Использую DL, классический CV и оптимизации в своей работе. Плюс-минус успешно. Общаюсь с другими людьми использующими сетки — их мнение примерно совпадает с моим.


Практик который любит ломать теории, именно так и появляются новые!)

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

Что-то как-то не очень.


В первом слое хватит и фильтра Собеля. Без обучения. Процесс упростится.

А сами то пробовали так делать? И насколько "упростился" процесс? И зачем, в таком случае в первых слоях делают аж по 32-64 фильтра?


А мы разделили этот процесс минимум на две части: обучение и исполнение, и жалуемся, что как-то много ошибок и в том и другом.

Есть online learning, если что.


Когда то, вдохновившись работами Boston Dynamics я экспериментировал с робототехникой.
Жаль, что у меня не было таких мощностей как сейчас, но это привело к очень интересным идеям.
Долго не получалось обучить что-то адекватное на стандарной полносвязной сети и сигмоиде. Решил попробовать функцию, более подходящую механике модели, основываясь на простой идее:

Вы же знаете, что Boston Dynamics это в первую очередь про классическую теорию управления, и т.д? ML у них появилось очень недавно.


Другими словами — передаем спайк (код объекта, ID) в нужное место, а не вектор из рациональных чисел, который обозначает непонятно что.

Только тогда придется иметь ввиду, что оптимизация переменной содержащей ID это не самая простая задача для градиентных методов, например. А не градиентные просто не подходят для решения задач минимизации с большим числом переменных.


«Танцы с бубном» — по другому не получается. Потому что DeepLearning красиво работает на учебных датасетах — реальность ставит всё на место.

Ну неправда же. Вполне себе успешно решают кучу задач. Причем, зачастую, с огромным отрывом от других методов. Разумеется, DL подходит для решения не всех задач.


Причем обучение (поиск) ведется не в области рациональных чисел, а в дискретном пространстве возможных состояний системы. Область поиска значительно снижается не только этим, но и добавлением списка допустимых классов/значений каждого параметра функций.

Так-то дискретная оптимизация это значительно более сложная задача, чем задача оптимизации непрерывных ф-ий. Как минимум в большинстве случаев.
К слову сказать, число переменных само по себе вообще не проблема. Часто увеличивают число переменных, чтобы сделать ландшафт новой ф-ии более гладким/выпуклым. Это нормально. Особенно так часто делают в дискретной оптимизации, чтобы перейти к непрерывной задаче.


В общем, мне кажется что автору стоит немного подтянуть теорию.

Обратное распространение ошибки – это чистый Анализ, это процесс ранжирования входов нейронов по результатам работы всей нейронной сети.

А можно этот момент раскрыть? Backpropagation это же про определение того, как каждый вес влияет на результат. И обновляют все веса сразу, никакого ранжирования не происходит, как я помню.

Почему дичь?
В современных картах вроде по несколько тысяч cuda ядер + данные в памяти были оптимизированы под GPU, а под CPU, вероятно, не была использована векторизация. Цифра большая (очень), но я бы не сказал что прямо дичь.


UPD:
Из треда:


I was trying to extract maximum performance from the int8 tensor operations and GPU memory bandwidth, so everything is pre-tiled and transposed as necessary to make the GPU happy. The CPU version is doing tons of indexing calculations to match the tensor fragment layouts
and just doing int8 mads with sum+=a*b, and it probably isn't ordered right for L1 cache. I would expect putting similar effort into a multithreaded AVX512 version with optimal layout on CPU could get many 100x, and perhaps 1000x faster.
указание типа

Наверное, все же, указание реализации.
Ну и про время исполнения тоже сложно — наверняка на шаблонах тоже можно запилить фабрику.

главное чтобы точек было не меньше чем параметров.

Строго говоря не обязательно — можно жить и так (minimum norm solution, как вариант)

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

Эм, сравнивается element и sortedList.get(index), разве нет?

например SVD или PCA.

Мммм, а есть ли между ними разница? По крайней мере с точки зрения критерия отбора информации SVD и PCA должны быть эквивалентны, разве нет?

Имеется ввиду что вторая производная всюду, кроме 0 равна нулю. В нуле соответственно тоже не определенна. Не очень понятно написал, согласен

Спасибо за ответ, совсем не разбираюсь в диффурах.
Но сохраняется ли это определение для уравнений первого порядка?

а в таком случае, действительно в каких ситуациях у градиентного спуска имеется преимущество перед аналитическим решением?

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


Ну и на stats.stackexchange в целом со мной согласны
https://stats.stackexchange.com/questions/160179/do-we-need-gradient-descent-to-find-the-coefficients-of-a-linear-regression-mode


Solve using THE WORST POSSIBLE general purpose nonlinear optimization algorithm there is, i.e., gradient descent. Use this only if you want to see how bad and unreliable a solution method can be If someone tells you to use gradient descent to solve linear least squares problems
В-четвертых, в статье изложил те трудности, с которыми столкнулся при изучении материала. Несмотря на обилие статей мне пришлось хорошо покопаться в этом. Надеюсь, что кому-то, моя статья облегчит студенческую жизнь.

В том-то и проблема, что материала "от новичка новичкам" по лин. регу очень много, и еще одна средненькая статья ситуацию не улучшит. Кстати, неплохо было бы указать в статье чем не понравились предыдущие статьи.


В-пятых, все в наших с вами руках: хотим статьи об экстремальном бустинге — берем и пишем :))

Мне это не особо интересно.

Еще несколько замечаний


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

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


уравнения частных производных 1-го порядка

Честно говоря, тут сам не уверен, вроде уравнение частных производных требует, чтобы в формулировке участвовали и производные, и сама функция, в нашем случае это не так, и мы просто имеем дело с линейной системой.


градиент — это отрезок

Все таки вектор


значение производной в точке M(0,0) равное +25 означает, что в заданной точке, при смещении значения вправо на условную единицу, значение возрастает на 25 условных единиц.

Наверное все таки стоит рассказать что это за условные единицы.


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

Все еще не понятно, зачем в принципе брать псевдослучайные числа, когда можно взять ноль

NumPy не причем. Чистый спуск (не стохастический) гарантированно будет медленней аналитического решения, по крайней мере на относительно небольшом числе признаков (тысячи, я думаю). На большом числе признаков, аналитическое решение все еще должно быть быстрее, если использовать итеративные солверы типа метода сопряженных градиентов.

Если вдруг нам «повезло» и процесс хорошо аппроксимируется полиномом 6й степени — сложно будет найти аналитическое решение. Или это выйдет «всего-то» система из 7 уравнений с 7 неизвестными?

Если речь идет о том, что полином мы строим от значений признаков, то да, это та же линейная регрессия, просто на большем числе признаков, с таким же аналитическим решением.

Ребят, серьезно, может есть еще какие-нить интересные темы для статей кроме лин. рега?


Можно же разобрать экстремальный бустинг, факторизационные машины, какие-нибудь нетривиальные варианты SVM. Какой смысл плодить одинаковые статьи так себе качества?

Результаты оч. красивые, вопросов нет, но как я уже и сказал — это относительно простые случаи.
В любом случае с нетерпением жду статьи с обзором метода, думаю будет очень интересно

Information

Rating
Does not participate
Registered
Activity