Pull to refresh
4
0

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

Send message
Ага, т.е. оно компилится в map. Можно написать оптимизирующий компиль который будет компилить Coconut в списочные выражения =)
Ну и 87 мс для теста это очень мало
Только возведение в квадрат? Т.е. цепочка преобразований (map -> filter -> map -> reduce к примеру) будет давать еще больше оверхеда? Немного грустно, язык выглядит симпатично.
А насколько получаемый код медленней «нативных» питоновских циклов и list comprehension?
>Методов оптимизации море: переборы, град спуски,… нейросети будь они неладны.
Мммм, а как можно оптимизировать нейросетями?
Вы безусловно правы, но вот только
Может дерево решений такую задачу решить? нет.

Все же это не совсем так.
Если у нас есть достаточно большая и хорошая (хорошо покрывающая случаи которые будут возникать на практике) обучающая выборка, то в принципе можно достигнуть не идеальных, но приемлемых результатов.

Доработав набор факторов, включив туда разности между оригинальными факторами, можно и деревья приспособить под такую задачу, но опять таки — разности брать абсолютные (x — y) или относительные ( (x — y)/(x+y)). Что лучше?

Кстати говоря, какие-нить из алгоритмов ML умеют вытаскивать подобные зависимости по дефолту?
Подскажите, пожалуйста центр изображения может быть таким «эталоном»?

Если изображение и это же изображение смещенное в некоторую сторону считаются идентичными, то скорее всего нет. Т.к. смещение уже изменит центр изображения
>это сильно замедляет обучение, т.к. каждую эпоху приходится сохранять всю сеть
btw, мне казалось что просто скопировать веса сети в любом случае значительно дешевле чем посчитать градиент. А градиент мы так или иначе считаем каждый раз. Я не прав?
Что характерно, попадание прям в самый глобальный минимум нам не то чтобы особо нужно — нередко это может привести к оверфиту. А в реальности мы хотим минимизировать ошибку не для обучающей выборки, а для всех возможных данных (но не можем, т.к. у нас есть только обучающая/валидационная/тестовая выборка =) ). Если я не ошибаюсь

>методы непохожие на модификацию SGD
Раньше в почете были методы использующие приближенную вторую производную — сопряженные градиенты, BFGS. Сейчас вроде как применяют только SGD. Ибо быстро.
Использование не градиентных методов, ИМХО, не особо оправданно из-за огромного пространства поиска.

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


Меня тоже =)
Но ведь если наша аппроксимированная матрица позволяет нам достаточно быстро спускаться, так ли важно точная ли она? Тем более (если я не ошибаюсь), реальная матрица может быть не положительно определенной, и тогда мы не сможем уменьшить ошибку.
Классная статья!

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

Немного позанудствую, Алгоритм Левенберга-Марквардта это все же не совсем метод второго порядка, и он использует первые производные (но не совсем производные от ф-ии ошибки) чтобы аппроксимировать матрицу вторых производных.
Под «искусственным интеллектом» маркетологи понимают

Ну не совсем маркетологи. В Computer science «искусственным интеллектом» иногда называют системы которые решают «творческие» задачи (вроде распознавания образов и т.д.)
Название не особо хорошее, это правда, но исторически так сложилось.
О, так намного лучше, спасибо!
Я извиняюсь за нубский вопрос, но можно момент с аппроксимацией модуля cosh(ln) немного подробней раскрыть? Я тут просто попробовал нарисовать такую ф-ию в wolframalpha, и получилось что-то совсем не похожее на модуль =(
>сравнивать самый быстрый из ста прогонов, и игнорировать все остальные
Слышал такое мнение, что окружение в котором запускается процесс не может заставить его выполняться быстрее. Т.е. если у вас есть 4-е запуска программы с разным временем выполнения, то тот, у которого это время меньше ближе всего к реальному времени исполнения, т.к. ему меньше всего «мешали»
Но… Бывает же передача иммутабельного аргумента по ссылке? Не скажу за JS, но в том же C++ вполне (а думаю, что еще в C#/Java/Scala)
>Насчёт конкретной нейросети («генеративная состязательная нейронная сеть») из статьи: судя по всему, её структура меняется и изменяется в объёме при накоплении опыта.
Вот не смог я это найти в оригинальной статье, подскажите где именно об этом говорится?
Ды, никак.
Идея чистых функций в том, что они не меняют состояние. Нет изменяемого состояния — можно параллелить сколько угодно вызовов функций, они не смогут друг другу «навредить» by design.
Запись в файл который кто-то читает, это уже изменение состояния. Как это разрулить в рамках ФП я, к сожалению, не знаю =)
Немного оффтопа
Я правильно понимаю, что у вас на выходе регрессии должны быть значения от 0 до 1? Если так, то может имело смысл использовать логистическую регрессию вместо линейной?

>Без нормализации расчет модели линейной регрессии методом градиентного спуска не прокатит.
Ну на самом деле как повезет. Если разумно выбирать шаг, то может и прокатит. Все таки выпуклая функция ошибки.
Но с нормализацией лучше, конечно.
Обычно, где-то неподалеку есть объявление самой коллекции, а так да. Но это цена которую лично я готов заплатить за удобный for
Зато с auto итерирование по коллекциям перестало быть болью

Information

Rating
Does not participate
Registered
Activity