• Машинное обучение алгоритмам
    –2
    Казалось бы — для побочного хобби-проекта — вполне неплохо. Я когда-то квадратичные/кубические функции нейросетями аппроксимировал. Вполне расширяющий сознание опыт, особенно если на промежуточные результаты (по эпохам) глазами смотреть.
  • (Законы Акина) законы космической инженерии
    0
    Да, и чем более сложное и критичное к ошибкам ПО — тем в большей степени маппится. Однозначно.
  • На графике резолва доменных имен из реестра РосКомНадзора кто–то азбукой морзе передает «послание»
    +2
    Нет, ну занимательный же факт, связанный с IT. Сойдет )
  • Настройка модели машинного обучения: подбор признаков и оптимизация гиперпараметров
    0
    Какой кошмар (без шуток). Но устно все равно все именно так и говорят. В общем я поправлю, спасибо.
  • Настройка модели машинного обучения: подбор признаков и оптимизация гиперпараметров
    –1
    Но все же говорят «фичеселект» по факту. Но в «условно литературном» тексте, конечно, «выбор признаков» лучше.

    Слово «sample» указывает на один массив чисел, описывающий объект, а «выборка» — на их совокупность. Так что в этой части согласиться не могу.
  • Настройка модели машинного обучения: подбор признаков и оптимизация гиперпараметров
    0
    Ох, ну давайте пытаться вести дискуссию с претензией на обоснованность.

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

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

    2. Я бы хотел видеть ссылку на аналогичный интерфейс Scikit-Learn. Название функции predict заменено на process сознательно. Я использую имя функции process в тех случаях, когда предполагается возможность наличия скрытых внутренних состояний и функция может давать разные результаты в зависимости от этих состояний. Как правило я, разумеется, стараюсь следовать интерфейсам Scikit-Learn, ставшим де-факто стандартными.

    3. Автор идет по пути наименьшего сопротивления, улучшая целевую метрику наиболее простыми способами. Разбор всех «странных эффектов» откладывается до момента, когда он будет действительно необходим. Код есть в спойлере выше. Я не сомневаюсь, что при определенных настройках нейросети она даст более или менее приемлемый результат, однако на обсуждаемых данных как правило модели основанные на комитетах решающих деревьев работают лучше.

    4. По пунктам.
    — Автор не просто перебирает все возможные значения параметра. А упомянутые grid/random search как раз занимают занимают значительно больше времени и являются прямым путем к переобучению.
    — Я пока не видел ни одного случая, когда был необходим тюнинг двух параметров одновременно. «One change in a time is still our holy grail».
    — Обычно ошибка зависит от величины численного параметра монотонно и ее немонотонность указывает на неадекватность валидационной процедуры.

    Критерий качества в машинном обучении (по крайней мере, в узком смысле этого термина) — качество предсказания. А оно (пока?) растет. Не гарантирую итоговый уровень топ 10 kaggle (по крайней мере без прочтения готовых решений), но уж более чем приличное качество предсказания я выжать смогу.
  • Анализ данных — основы и терминология
    0
    Вот физики сейчас удивились, что их любимые МНК и градиентный спуск — это оказывается методы машинного обучения, а не методы оптимизации.

    В чем отличие от «методов машинного обучения» на уровне математического определения? И там и там надо определенным способом определить функцию специального вида на некотором множестве (почти всегда — в R^n), по набору пар соответствующих точек в областях определения и значений, оптимизирующую некоторый функционал качества. Я могу спуститься на уровень совсем-совсем строгих и математичных определений, так или иначе сейчас для меня все выглядит так, что МНК — это (простой) метод машинного обучения из той эпохи, когда еще не было термина «машинное обучение» и современных алгоритмов, составляющих его сущность.

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

    Опять же, сошлюсь на википедию. Вот здесь утверждается, что «Аппроксима́ция (от лат. proxima — ближайшая) или приближе́ние — научный метод, состоящий в замене одних объектов другими, в каком-то смысле близкими к исходным, но более простыми.» — объектами (в разумном смысле этого слова) произвольной природы, в частности помимо анализа в статье упоминается теория чисел, а люди, разбирающиеся в математике на более энциклопедичном уровне, чем я, наверняка приведут еще массу примеров не менее далеких от упомянутых полиномов специального вида, чем диофантовы уравнения. Таким образом обсуждаемый термин — это именно профессиональный жаргон, не имеющий строгого смысла даже в пределах одной научной дисциплины.
  • Как сегодня создаются 64k intro: погружение в Immersion
    0
    Безумно прекрасный, завораживающий минимализм. А почему именно 64k? По причинам исторического ".com" характера?
  • Анализ данных — основы и терминология
    0
    Ну я бы не смешивал понятия «логистическая регрессия» и «классификатор». Несмотря на то, логистическую регрессию МОЖНО использовать для построения классификатора, это все же совсем разные вещи.

    Я бы тоже не смешивал. И не смешиваю, а коллеги не соглашаются.

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

    Вот тут бы я хотел чуть точнее договориться по поводу терминологии. Итоговая модель в случае задачи регрессии в узком смысле (когда у нас уже есть зафиксированное отображение из пространства объектов в R^n) — это просто функция из R^n в R, вообще говоря, — произвольной природы. Метод построения такой функции — это алгоритм машинного обучения, берущий на вход размеченную выборку и дающий ее на выходе. Аппроксимация в данном контексте — это просто математический жаргон, не имеющий строгого определния и означающий приближение одних объектов другими.
  • Анализ данных — основы и терминология
    –3
    Вы же не будете называть «логистической регрессией», например, нейронную сеть с сигмоидой на выходном слое, правда? Ведь если вы так будете делать, вас никто не поймет.

    Казалось бы буду. Только не с сигмоидой, а с софтмаксом. Ссылки тут, там и сям подтверждают, что общепринято логистической регрессией называть скорее постановку задачи, а не конкретный алгоритм, ее реализующий.
    4) Да, разумеется, но постановка задачи другая, метрики другие. Мне кажется — вполне достаточно для того, чтобы выделить в отдельную логическую единицу в классификации задач машинного обучения по формулировкам.
  • Анализ данных — основы и терминология
    –1
    Я бы хотел сказать, что в настоящее время в ML происходит некоторая неразбериха в терминологии, если не сказать сильнее. В статье (и в будущих) мне бы хотелось ввести некоторую бОльшую упорядоченность в хаос терминов. Теперь по пунктам.

    1) Это вопрос выбора термина. Мне хочется как-то более или менее четко разделить (классические) алгоритмы, в которых мы фактически гарантируем верный результат на каждом входящем объекте (упоминавшиеся сортировка и реализация словаря, а также реализации других классических структур данных (таких как массивы, очереди, деки) и алгоритмов) и алгоритмы эвристического и машиннообучабельного характера, в которых мы не гарантируем такого результата (упоминавшееся распознавание цифр, предсказание цен на товары, погоды, переходы по ссылкам — в общем на практике любые абстракции более высокого уровня).

    2) Я употребляю термин «feature selection» в смысле «feature engineering» — в целом процесс выбора «хорошей» функции, задающей отображение из пространства объектов (instances) в пространство примеров (фичевекторов, samples). На практике существует большая неопределенность в терминах — и в этом конкретном тоже. Говорят «тут надо немного поселектить фичи» — именно в смысле подбора новых значений, при добавлении которых метрика качества на валидационной выборке растет.

    Ссылку на более или менее общепринятые классификации поищу, но по факту сейчас с этим трудно. Грубо говоря перечисленные понятия (object detection, image segmentation, machine translation) относятся скорее к тематике, а не к форме постановки задачи. И уже в свою очередь сводятся к хорошо исследованным заготовкам прикладным исследователем.
  • Анализ данных — основы и терминология
    0
    Это каноничная логистическая регрессия. Прямо по определению — en.wikipedia.org/wiki/Logistic_regression

    Так и я в основном тексте говорю, что это «логистическая регрессия». А мой комментатор утверждает, что это не «логистическая регрессия» а «просто регрессия», а «логистическая регрессия» как постановка задачи — это «классификация». И кто прав?

    А это не регрессия, это аппроксимация.

    Ну не совсем. Допустим мы предсказываем, скажем, цену на товары и уже выбрали функцию, отображающую входящие данные в фичевектор. Тогда (несколько упрощая) у нас есть некая неизвестная функция из R^n в R и набор точек (соответствующий размеченной выборке) на которых известные ее значение. После этого построение модели, сопоставляющей любой точке в R^n значение в R — это и есть построение новой функции специального вида, приближающей исходную, т. е. аппроксимация.
  • Анализ данных — основы и терминология
    –2
    Различаются, и тем не менее обе они относятся к задачам классификации (более того, первая из них сводима ко второй с отсечением по порогу).

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

    Ой, да ладно. Нам дают свершившиеся события (наличие или отсутствие перехода по рекламной ссылке, 0 или 1) и просят предсказать вероятность этого события (действительное число от 0 до 1) и это регрессия (задача, в которой по набору значений некоторой действительнозначной функции надо аппроксимировать эту функцию). Ну-ну.

    Кстати, вот например в википедии — и в русскоязычной, и в англоязычной логистическая регрессия находится в секции, относящейся к регрессии. Еще один аргумент для выделения задач с такой постановкой в отдельный класс для снятия неопределенности.
  • Анализ данных — основы и терминология
    –1
    Различаются, и тем не менее обе они относятся к задачам классификации (более того, первая из них сводима ко второй с отсечением по порогу).

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

    Ой, да ладно. Нам дают свершившиеся события (наличие или отсутствие перехода по рекламной ссылке, 0 или 1) и просят предсказать вероятность этого события (действительное число от 0 до 1) и это регрессия (задача, в которой по набору значений некоторой действительнозначной функции надо аппроксимировать эту функцию). Ну-ну.
  • Анализ данных — основы и терминология
    –2
    Ну казалось бы постановки задач «дали классы, хотят классы» и «дали классы, хотят вероятности» различаются, не правда ли? А по первой ссылке как раз таки указан не «конкретный алгоритм», а _постановка_задачи_ (… is a regression model where the dependent variable (DV) is categorical).

    По второй же — описан один конкретный (из многих) алгоритм, решающий задачу логистической регрессии. Точно так же эту задачу можно решать с помощью нейросетей, алгоритмов на основе ансамблей решающих деревьев и т п.
  • Анализ данных — основы и терминология
    –4
    В смысле? Здравый смысл казалось бы, классификация задач машинного обучения с учителем по постановке. Или дают классы и просят предсказать классы, или дают числа и просят предсказать числа, или дают классы и просят предсказать вероятности. В каждой из постановок используются немного отличающиеся алгоритмы и разные метрики качества.
  • Что мы знаем о ландшафте функции потерь в машинном обучении?
    0

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


    Основной мой поинт в том, что реальные законы природы и ключевые методы (такие, как конструкция нейросетей, не говоря уже о алгоритмах типа KNN и линейной регрессии в машинном обучении, или, скажем, законы гравитации в физике) носят относительно тривиальный и исключительно эмпирический характер. Действительно сложные конструкции (к примеру, VC-размерность или ОТО) носят сугубо теоретический характер и почти либо целиком оторваны от реальности, не говоря уже о фактических применениях — как сейчас, так и в гипотетическом будущем. Сложные конструкции основанные на фундаментальных носят инженерный характер и дают отдачу в кратко- или среднесрочной перспективе. Конструкции, изложенные в статье, находятся на разумной грани, к ним претензий нет.


    По сабжу последнее, что хотел бы заметить — это то, что в свое время я собирался заниматься академической наукой — и имел все предпосылки для этого, однако был шокирован реальными практиками академического сообщества и забил. Касательно конкретно машинного обучения я могу сослаться на Макса Милованова (Nvidia, результаты на каггле), утверждавшего что зачастую академические ресерчеры делают грубейшие ошибки при валидации своих алгоритмов и на упоминавшегося Хинтона, где-то жаловавшегося на невозможность публиковать определенные статьи ввиду необоснованного отказа со стороны сообщества. Фактический масштаб бедствия значительно больший и я мало где наблюдал такой уровень неприкрытого цинизма как в неформальных обсуждениях в академической среде.


    ============


    1) В статье — вроде ничего. С концепцией черезмерного теоретизирования на тему уже подобранных эвристик при этом совершенно не согласен.
    2) Тут я, пожалуй, погорячился. Всё-таки похоже на то, что основываясь на размышлениях о локальных максимумах функций в R^n можно придумать что-то разумное на тему последующих эвристик.

  • Что мы знаем о ландшафте функции потерь в машинном обучении?
    –3
    Эх, хаброкарма моя хаброкарма.

    1) Да, и так сойдёт. Критерий применимости — эксперимент, а не псевдотеоретические обоснования.

    2) Цитата выдернута из контекста. "… не нужны высокие размышления о свойствах поверхностей в R^n", а не «не нужны размышления вообще». Размышления очень нужны — но совсем другого характера и формулировки.

    PS) У меня накопилась масса вопросов к самым разным людям. Но военных и служителей культа среди них (пока что?) нет. А вот к социальной страте людей, профессионально симулирующих труд на пользу общества, с учётом того, что я в самом деле человек, который «явно что-то понимает в математике и программировании» и, заодно ещё в том, что находится под капотом у самых разных академических организаций, у меня претензии есть — и весьма серьезные.
  • Что мы знаем о ландшафте функции потерь в машинном обучении?
    0
    Да ладно, принудительное обнуление значительной части связей в 1-2-3 первых слоях нейронной сети (=сверточный слой) — сложная математика? Замораживание фиксированного количества случайных весов в слое на протяжении батча или эпохи (=дропаут) — сложная математика? Ну знаете ли, от этого уровня математической сложности до описанного в статье, мягко говоря, довольно неблизко. Меня расстраивает не алгоритмическая формулировка — с ней как раз все в порядке, а разводимый вокруг не слишком научный по содержанию, но крайне научный по форме, шум.

    P. S. Я думаю, что многообразия и и кольцами вычетов смутить меня довольно трудно — до этой степени я в свое время основы высшей математики изучить успел. Что же касается многообразий над кольцами вычетов (и вообще над теми или иными алгебраическими структурами не являющимися полями, еще и, наверное, алгебраическими замкнутыми), то либо (скорее всего) это то самое сознательное разведение безосновательного наукоподобия, которое по неведомым причинам меня так раздражает, либо автор действительно с непонятными мне целями открывает книги по относительно продвинутой теоретической математике о которой лично я не имею почти никакого понятия.
  • Что мы знаем о ландшафте функции потерь в машинном обучении?
    –1
    Меня чуть выше уже заминусовали, но все-же, все-же, все-же. Неужели не очевидно, что для того, чтобы сделать переход от полносвязной нейросети к сверточной не нужны высокие размышления о свойствах поверхностей в R^n, а достаточно замечания о том, что многие свойства анализируемого изображения локальны и поэтому имеет смысл не полениться и попробовать принудительно занулить все веса кроме соответствующих близким пикселям (=нейронам входного слоя) в первом слое-двух? Неужели это не очевидно всякому, владеющему матаппаратом на уровне второкурсника мат факультета и имеющему минимальный опыт применения машинного обучения на практике или в соревнованиях? Ну как так?
  • Что мы знаем о ландшафте функции потерь в машинном обучении?
    –1
    Ладно, я всё понял, больше не буду, не минусуйте пожалуйста.

    И всё-таки она вертится важность и ценность теоретических работ значительно переоценена обществом.
  • Что мы знаем о ландшафте функции потерь в машинном обучении?
    0
    Да, это правда. Я бы сказал, что сверточные сети — это простая (но, безусловно, трудно придумываемая) эвристика. Но вот незадача — аргументы для ее придумывания казалось бы радикально более просты, чем рассуждения о NP-сложности и особенностях функции потерь.
  • Что мы знаем о ландшафте функции потерь в машинном обучении?
    –8
    > Я бы не был столь жёсток с учёными.

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

    Спасибо
  • Небольшая библиотека для применения ИИ в Telegram чат-ботах
    0
    >>> Ваша мета-модель по большому счёту это класс с реализацией единственного метода predict()

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

    >>> Вопрос не в том, зачем она вам. Зачем она другим?

    Кажется «другие» в основном не против — судя по статистике апвотов/даунвотов, добавлений в закладки и подписок за последние сутки.
  • Небольшая библиотека для применения ИИ в Telegram чат-ботах
    0
    Да, я ее, кажется, разбирал и не смог быстро понять, как использовать в рамках нужных механик с применением ML-модели.
  • Небольшая библиотека для применения ИИ в Telegram чат-ботах
    0
    >>> Про, собственно, машинное обучение и нет ничего

    «Когда-нибудь тут случится сложный ИИ, но, увы, пока нет. По крайней мере не в этой статье.»

    >>> Бот — это по сути обёртка над запросами к API Telegram. При этом не самого лучшего качества

    «Оговорюсь, что в первую очередь я специализируюсь на алгоритмических аспектах разработки и поэтому буду рад конструктивной критике решений кодерского характера от более сведущих в этом вопросе специалистов.» Можно чуть более конструктивно? Что конкретно стоит улучшить и почему?

    Про машинное обучение в строгом смысле слова пока нет. Буду рад, если мне покажут имеющуюся (более развитую и написанную специалистами) библиотеку, пригодную к использованию в нужном мне виде (с мета-моделью и функцией перевода результата ее применения в понятный пользователю вид; и еще с возможностью регулярно обновлять данные со сторонних API).
  • Небольшая библиотека для применения ИИ в Telegram чат-ботах
    0
    Тогда ещё толком не было, плюс под несколько специфическую задачу, плюс академический интерес. Если есть ссылки на хорошие библиотеки (сам пока видел только одну, и то мне на текущем этапе проще со своей) — буду благодарен.
  • Как быстро написать и выкатить в продакшн алгоритм машинного обучения
    0
    Я рад, что Вам понравилось. Буду писать еще.

    Я предпочитаю контролировать код, который пишу насколько это возможно и использую библиотеки типа pandas или csv только в случаях, когда вручную быстро написать нужный участок кода проблематично — например в случае очень больших файлов или текстовых значений с запятыми. Довольно печально потратить несколько часов (а то и дней) на поиски причины несоответствия метрики на валидации и в продакшене и, наконец, обнаружить, что проблема состояла в том, что та или иная библиотечная функция работает «немного» не так, как предполагалось.
  • Как быстро написать и выкатить в продакшн алгоритм машинного обучения
    0
    Ну это первый, пристрелочный вариант. Нужный для того, чтобы показать общий стиль мышления и то, как выкатить потом все это дело в прод. Планируется вторая (а может быть и дальнейшие) части — там буду уже заниматься более тонкой оптимизацией, глубже экспериментировать с фичами и моделями. В частности и избавляться от лишних неинформативных значений. Спасибо большое за замечание, оно сэкономит мне немного времени в будущем :)
  • Яндекс открывает Алису для всех разработчиков. Платформа Яндекс.Диалоги (бета)
    0
    О, еще и к Алисе свой валютный бот прикручу. Только для русского языка качество разспознавания поднять немножко придется )