Как стать автором
Обновить
20
0
Dmytro Panchenko @roryorangepants

Senior ML Engineer

Отправить сообщение
К чему здесь хаб «машинное обучение»? Это же классические алгоритмы.
Ну для «CNN» и «deep learning» устоявшиеся аналоги всё же есть. А вот с остальными примерами всё плохо, конечно.
Не понимаю, как можно требовать тотальной «русификации» от отрасли, которая растёт у нас на глазах, здесь и сейчас, и растёт как раз таки на английском языке.

Мало того, что это уже есть на Хабре, так ещё и контент статьи довольно сильно устарел с тех пор, когда она писалась.

Да просто нужно навернуть аугментации D4-группы (повороты на 90 градусов).
Всегда вспоминаю в этом ключе научно-фантастический рассказ Каганова.
Присоединюсь к этому комментарию.
К языковым ошибкам в оригинальных текстах отношусь лояльно, но плохие переводы с кучей ошибок (типа мусора, который массово переводят в корпоративные блоги Отус или там Jet) ненавижу.
Это, конечно, совершенно неожиданный и новый для меня аргумент.

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

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

Не очень люблю апеллировать к этому, но в данном случае всё же скажу: не думаете же вы, что никто этого не пробовал?

Например, вот статья с ревью этого вопроса. Какие выводы делают авторы статьи?
1. Да, методы второго порядка показывают классные результаты по сравнению с SGD без моментума. К этому выводу у меня две претензии: во-первых, кто ж сейчас учит без моментума? Во-вторых, авторы статьи заменяют ReLU на tanh, потому что с ReLU методы оптимизации второго порядка не дружат.
2. Со скоростью всё очень плохо. На одном и том же железе в альтернативных экспериментах авторы получают такой результат:

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

PhD в хорошем вузе частично закрывает опыт.

Местами у вас значения фраз получаются прямо противоположными из-за ошибок переводчика. Кто ж так переводит?

Собрал под катом перлы.
Как нам узнать количество кластеров, с которого нужно начинать?

«to begin with» переводится не как «с которого нужно начинать», а как вводная конструкция «для начала».

а также последующим откладыванием на графике балла кластеризации

Вы хоть где-то видели, чтобы в статье по машинному обучению метрику или скор переводили как «балл»?

по объективной функции k-средних

Objective function — это, к вашему сведению, не «объективная» функция, а целевая.

(попарные свойства)

Признаки же. Или координаты, если речь о графике.

затем вычислим k-средних по умолчанию

В оригинале не «вычислим k-средних по умолчанию», а «вычислим метрику по умолчанию у k-средних».

Разница не очевидна

В оригинале «The difference could not be starker», т.е. ровно наоборот: «Разница очень заметна».

Если увеличить гауссовы помехи

Гауссов шум.

из-за высокой вариативности

Дисперсии. Variance — это дисперсия, Карл!

максимизации ожиданий

Таки не переводится.

по мере роста штрафов

Если уже переводите penalty дословно, то «роста штрафа», а не «штрафов».


И на мой взгляд, автор оригинала приводит примеры, где противоречит себе.
Вот здесь:

Я вижу хороший локоть (т.е. изменение угла графика) как раз в пяти. А вот в варианте с силуэтом здесь же как раз пик на четверке:

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

Основываясь на кагле, как и написал выше.
Во всех NLP -конкурсах есть хорошие кернелы на основе бустинга (ну, сейчас, конечно, все уже начали берты стакать, но я про чуть более ранний период), а вот приличный результат на NB (хотя бы сравнимый по уровню ошибки) я не видел.

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

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

У Байеса из NLTK нет гиперпараметра alpha, да и к тому же обучается он гораздо медленнее, чем тот же алгоритм из scikit-learn. Видимо, хранение признаков в разреженной матрице гораздо эффективнее, чем сохранение их в словаре для NLTK.

Своим комментарием я имел в виду, что использовать наивный Байес — в целом не лучшая идея.
Наиболее популярные из них: TF-IDF, прямое и частотное кодирование. Я использовал частотное кодирование, суть которого представить каждый отзыв в виде вектора, элементы которого являются числом вхождения каждого слова из вокабуляра.

Наиболее популярны в 2019 году явно эмбединги, а не OHE/частотное кодирование.

В NLTK есть свои классификаторы, можно использовать и их, но работают они медленнее аналогов из scikit-learn и имеют меньше настроек.

Если потом использовать Naive Bayes, а не какой-нибудь нормальный современный алгоритм, то какая, в общем-то, разница?

В моем случае грид серч выдает оптимальное значение гиперпараметра равное 0 с точностью в 0.965. Однако такое значение явно не будет оптимальным для контрольного датасета, так как там будет большое число слов, не встречающихся ранее в обучающем наборе. Для контрольного набора данных эта модель имеет точность 0.598. Однако если увеличить alpha до 0.1, точность на обучающих данных упадет до 0.82, а на контрольных возрастет до 0.62.

Это оверфит под тестовый датасет.
На самом деле, нужно было убрать даталик из гридсерча (делать на каждом фолде энкодинг по тренировочной части).
Вы называете «простейшей» полносвязную, а автор — простую архитектуру сверточной, потому что в 2019 году сверточные сети — настолько дефолт для визуальных данных, что никто даже не думает о применении полносвязной.
На хабре уже был обзор этой же статьи, написанный с меньшим количеством воды и с техническими деталями.
Поскольку кармы мало то необходимо писать в другие хабы, а не защищенный хаб «Я пиарюсь».

Вывод неверный. Поскольку кармы мало, то необходимо писать статьи по сути, а не рекламные.
Если алгоритм реализован и работает, а не «работает на бумаге», как часто бывает, то в чем проблема поделиться реализацией?
Отсутствие метрик в статье и сравнение на синтетических данных с сомнительной SotA (k-means для данных такого вида и правда сомнительный, уж простите) выглядит неубедительно.
На рисунках 1 и 2 приведены результаты классификации метода k-средних и нового метода классификации.

Здесь (и везде в других местах) говорить «классификация» некорректно.

В целом, рекомендую автору ознакомиться с другими алгоритмами кластеризации (например, тут), потому что сравнение с k-means выглядит неубедительно.

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

Нет, не очевидно. Дайте метрики какие-нибудь на пачке стандартных датасетов. Дайте результаты на реальных данных.
В конце концов, дайте реализацию с каким-нибудь стандартным интерфейсом (похожим на sklearn-овский, например), чтобы люди могли сравнить.

А то пока звучит как очередное изобретение вечного двигателя.
Возможно, слово «необходимые» здесь не очень корректно, если сильно уж придираться, но, на мой взгляд, всё равно понятно, что хотел сказать автор.
Это как начать гайд по разработке под Андроид с того, что prerequisites — это владение синтаксисом Java. Да, есть React Native, есть Xamarin, есть ещё много чего, но дефолт — это Java.
Так и здесь. Понятно, что компьютерное зрение — это раздел задач и алгоритмов, не привязанный к языку. Но изучать компьютерное зрение и реализовывать необходимые алгоритмы проще и в данный момент популярнее именно на Python.
Простите, а при чём здесь когнитивное искажение автора?

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

Я читаю хаб с 2006 года, и вижу, что статьи выходят с завидной регулярностью. И это хорошо, потому что всегда есть, что почитать.

Забавно, потому что в контексте нейросетей я говорил про хаб «Машинное обучение», который добавили примерно в 2014.

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

Первые попавшиеся статьи из десятков постов такого плана:
habr.com/ru/post/459822
habr.com/ru/post/456738
habr.com/ru/post/440190
habr.com/ru/post/322438
habr.com/ru/post/417063

Обзор материалов про «нейросети с нуля», в котором есть ссылки ещё на кучу таких статей:
habr.com/ru/post/417209

Понятно, что здесь статьи самого разного качества, и некоторые из них могут быть хуже данной, но мой тезис в том, что постов по основам нейросетей и по тому, как их написать «с нуля», на хабре полно.
Есть и строгие математические определения, и разборы «на пальцах».

Если кому-то понадобится разобраться в этой теме, на хабре уже есть все необходимые материалы для этого, и контент типа этой статьи не несёт ничего оригинального и нового, просто пересказывая другим языком то, что было обговорено уже сотню раз. Так в чем же его полезность?

Информация

В рейтинге
Не участвует
Откуда
Харьков, Харьковская обл., Украина
Зарегистрирован
Активность