Как стать автором
Обновить
4
0

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

Отправить сообщение
> который хорошо адаптируется под разные ML-задачи.
Так уж под все? А как быть, если у нас очень большая размерность задачи, и относительно мало обучающих примеров?
Или, скажем, есть много категориальных фич с большим числом значений (таким, чтобы было не выгодно переводить их в бинарные)?
Насколько я помню, на Optical Flow и поиске лэндмарков на лице НН все еще несколько сливают традиционным подходом. Причем поиск лэндмарков так же делается с использованием МЛ.
Извиняюсь, не увидел, что вы говорили о линейных сетях.
А не подскажите, где в посте они упоминались?
Разница в 10 раз между итерациями LM и GD это еще хорошо) У меня на некоторых задачах выходило что-то в духе двух-трех порядков.
Тем не менее, надо помнить, что каждая итерация LM это довольно дорогая операция, т.к. надо накопить немаленький якобиан, перемножить его и решить довольно большую СЛАУ
Для задач Deep Learning оказалось, выгодней делать много маленьких и не особо точных шажков.
Да и в целом, для ML сводить ошибку на обучающей выборке к нулю не то чтобы сильно нужно.

А разбор интересно было бы посмотреть.

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

Теперь понял. Кажется
Градиентный спуск описанный в посте вполне должен работать и для нелинейных случаев. Не так хорошо как Гаусс-Ньютон, но вполне себе, особенно если сбоку прикрутить что-то типа линейного поиска.
Что касается локальных минимумов (если я не ошибаюсь), что LM, что градиентный спуск сходятся к локальному минимуму.
А можно немного пояснить комментарий?
Ну т.е. я вроде нигде не говорил что нельзя использовать Gauss-Newton для обучения сетей. Можно, как и большую часть алгоритмов нелинейной оптимизации (SR1, (L)BFGS, CG, etc). Но в большинстве статей по Deep Learning что я встречал народ предпочитает SGD, включая Yann Lecun
О! Спасибо!

Заголовок слайда
>Convex Shmonvex
Что-то в голос
>Let Dog
Dog Leg?

Если я правильно понимаю, то квази-Ньютоновские методы и методы второго порядка особо не используются при обучении нейронок на сегодняшний день. Все используют разные модификации SGD.
Я бы добавил, что сам по себе метод градиентного спуска с фиксированным шагом является довольно не эффективным алгоритмом оптимизации. На практике, стараются его (шаг) выбирать адаптивно тем или иным образом (например, при помощи line search).
Безумно извиняюсь, пока коммент проходил модерацию, на большую часть вопросов уже дали ответ
Я не то чтобы хорошо знаю С++, но возникло несколько вопросов.
1. Если действительно нужно выделять много объектов на куче, что мешает использовать кастомный аллокатор который будет заранее выделять большие куски памяти?
2. (Я вот как-то не использую смарт-поинтеры, поэтому могу ошибаться) Разве декремент/инкремент не будет возникать только в ситуации, когда мы пытаемся расшарить владение и когда «владелец» убивает поинтер? Во всех остальных случаях можно передавать объект по ссылке, и вроде как оверхеда не будет.

4. А можно чуть подробнее про оператор == и заголовок (точнее что имеется ввиду под заголовком).

5. В С++ и модулей то нет. А если разместить реализацию ф-ии в .h должно же работать?

Очень бы хотелось увидеть какое-нить описание архитектуры библиотеки/список доступных МЛ алгоритмов.
Еще бы сравнение с существующими инструментами, особенно по части производительности.

Коду в статье очень не хватает развернутых комментариев (например, что такое tree). И выравнивания. На момент написания комментария код очень трудно читать.
А кто нам мешает использовать модель нейрона, который возвращает пришедший сигнал как он есть? Получим вполне себе линейный регрессор.
Для новичков линейная модель будет явно проще. А потом сверху можно и пороговую ф-ию накрутить, или чего-нить еще.
А почему? Вроде НС вполне можно использовать для регрессии.
А для обучения (в смысле обучения людей) линейный классификатор чуть хуже, т.к. чуть больше формул и чуть менее наглядные примеры
А вы все равно пишите) ИМХО, хабру не хватает продвинутых статей по ML/DL
Еще можно притвориться что оптимизируешь сумму модулей при помощи взвешивания и МНК (IRLS) https://en.wikipedia.org/wiki/Iteratively_reweighted_least_squares
Еще (могу ошибиться, на самом деле) вроде стохастический градиентный спуск нормально работает с негладкими ф-иями потерь.
Насколько я помню, там используются немного другие трюки, вроде Soft thresholding https://en.wikipedia.org/wiki/Proximal_gradient_methods_for_learning
Подозреваю что там обученная модель занимается сегментацией облачков и фона
Ну я же не предлагаю совсем отказаться от GUI в С++, я говорю, что в стандартной библиотеке (которая должна создаваться из расчета, что ее API не будет меняться десятилетиями, и что она будет реализованна для множества платформ) GUI явно излишен.

Для графического интерфейса, в мире С++ есть решения. Тот же Qt.
Если нужен быстрый старт, то берем Qt Creator и вперед. Подозреваю что подключить Qt в других IDE тоже не особо сложно.

С++ не очень подходит для обучения, ИМХО, даже совсем.
Ну и в таком случае, надо отсылать к понятным библиотекам.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность