Pull to refresh
124
Вадим Великодный@masai

MLE

41
Subscribers
Send message

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

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

Но и выводы потом вы вправе делать только об эссе о путешествиях.

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

Повторность означает, что вы исследуете свойство несколько раз. То есть, эссе должны быть от разных людей (хотя бы 30, чтоб можно было какую-то статистику считать).

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

Это не значит, что вы зря собрали данные. Просто некорректно делать выводы, которые вы делаете. Но можно сделать другие, менее амбициозные.

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

В принципе, на тех данных, что есть, тоже можно что-то сделать, но нужно очень аккуратно подойти к этому вопросу.

Попросить носителей написать эссе - это из области фантастики, конечно:) Мне бы их замотивировать просто опрос пройти (чтобы не ограничиваться контрольной группой неносителей-экспертов).

Я прекрасно понимаю, какие у вас были сложности. Просто у вас был выбор: хорошее исследование, которое почти невозможно провести, и методологически сомнительное, которое более реально. Вы провели второе, но почему-то выводы делаете так, как будто это первое.

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

Я хотела взять эссе и нормализовать их через ChatGPT.

Тогда бы вы вообще никаких выводов сделать не смогли. Это как попросить одного художника написать репродукции разных эпох в одном стиле, а потом сравнивать стили этих эпох. :)

Строго говоря, когда появилась GPT-3, Маск уже ушёл. Да и до этого компания не совсем его была.

Ушёл кстати потому, что считал, что OpenAI отстала от Google.

Не очень понятно, какие ограничения. Numpy же получилось развернуть.

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

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

(Тут ещё возникает вопрос, а что такое C2 с объективной точки зрения, и как мы определяем уровень.)

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

Модель вполне могла отличать тексты по пунктуации (которую обладатели C2 могут знать хуже редакторов). Или по уточнениям вроде "Emily, 33", которые тоже в эссе встречаются реже, чем в газетах. :)

В общем, поднятая проблема интересна, но методология вызывает много вопросов.

Это действительно не восстановление и додумываение, но это не значит, что для целевой аудитории это не улучшение. :)

Без момента, "бассейнов" и прочего.

Про момент я ничего не говорил, но бассейн у вас очень даже есть. :)

Бассейн локального минимума (attraction basin) — это такая область, что при выборе начальной точки из него, градиентный спуск попадёт именно в этот локальный минимум. Вы же не будете отрицать, что его нет. :)

Определяя эти бассейны, мы не можем сказать, что ДА, МЫ ВЗЯЛИ 10 ТОЧЕК, и ВРОДЕ ОНИ СТЯГИВАЮТСЯ, И ЭТО БАССЕЙН. И ВСЕ ТОЧКИ ТУТ - БЕСПОЛЕЗНЫ.

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

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

Кстати, мой алгоритм чуть ли не в 1% лучших

Среди каких алгоритмов? :)

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

А пока что это просто слова. Наука так не делается.

Кстати, multistart matlab-a находит глобальный минимум предложенной функции 0% раз

А для какого числа точек и какой области поиска вы запускали? :) Это точно было честное сравнение? А то если вы использовали 100 точек для своего алгоритма и 10 для матлаба, то сравнение некорректное.

А какие ещё методы глобальной оптимизации вы пробовали запускать?

Уже приводил пример, даже понятную аналогию давал

Похоже, вы не поняли вопрос. Попробую объяснить ещё раз.

У вас в алгоритме каждая точка обрабатывается до тех пор, пока не выполнится одно из условий:

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

  2. Закончилось число итераций. А вот тут очередь помогает, так как хоть вы и не нашли минимум (иначе бы у вас была ситуация 1), но у вас будет лучшая на данный момент оценка. Но тут возникает риск, что если у вас много точек, то вы можете не дойти даже до локального минимума.

Если вы думаете, что никто не использует очередь с приоритетами при оптимизации, то вы ошибаетесь. Например, метод ветвей и границ основан на этом, да и другие методы оптимизации. Это не какое-то откровение. Часто очередь просто не упоминают, так как это просто деталь реализации.

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

В байесовской оптимизации пошли ещё дальше и назначают приоритеты вообще всем точкам из области поиска. :)

Без обид, но давайте вы всё же что-то прочитаете. Потому что пересказывать всё очень утомительно. У вас очень выгодная позиция: вы можете говорить всё, что в голову придёт, а мне приходится подробно объяснять. Доказательствами вы, как я понимаю, себя не утруждаете, несмотря на то, что, например, с уменьшением шансов в N раз ошиблись.

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

Я проверяю эффективность поиска глобального оптимума, а не настройки размера шага.

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

То, что вы подобрали функцию, на которой ваш конкретный алгоритм работает лучше какого-то другого алгоритма (из другого класса), называется в науке cherrypicking. Бенчмарк существует для того, чтобы можно было сравнивать методы оптимизации. Каждая функция там сложна в чём-то своём. Что толку от алгоритма, если на вашей функции он хорошо сходится, а на остальных нет?

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

1200 локальных минимумов против 1 глобального в интервале [[-100;100],[-100;100]]

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

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

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

Погуглил и глобальную оптимизацию, и мультистарт, и стохаотическую глобальную оптимизацию - ничего не нашел ).

Я только в этих комментариях две статьи скинул. Второй 38 лет в этом году будет и она описывает ваш метод, который в то время был хорошо известен.

У нас какой-то разный гугл. Я просто пишу "multistart global optimization" и мне вываливает кучу статей. Это я даже в Google Scholar и arXiv не предлагал ещё. :)

Вот, первая попавшаяся же статья рассказывает, что ещё в 1970 году предложили модификацию вашего алгоритма. Почему нужно кидать много точек? Чтоб попасть в бассейны разных минимумов. И вот предложили сперва кидать равномерно, а потом смотреть, какие точки собираются в кучку после нескольких шагов. Если они собираются в кластер, то можно только одну точку рассматривать, а остальным назначить низкий приоритет. Этот метод был очень популярен в 70-х.

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

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

Не требует доказательств, что шанс застрять в локальном оптимуме меньше в N раз, где N - количество начальных точек.

Не очень понятно, как вы это посчитали.

Пусть вероятность застрять в локальном оптимуме равна 2/3.

Тогда если мы делаем N=2 независимые попытки, получаем, что вероятность застрять в обеих равна 2/3 × 2/3 = 4/9. Это меньше, чем исходная вероятность, но не в N раз (иначе была бы 1/3=3/9).

На телефоне эта монструозная ссылка бесполезна. :) Сэкономлю немного времени другим читателям и добавлю картинки.

Еще раз посмотрите на тестовые функции в этом репозитарии и тестовую функцию в статье

Ну хорошо, а в чём сложность функции-то? Ярко выраженные локальные экстремумы, градиент везде хороший. Если попал в окрестность — гарантированно попадёшь в локальный оптимум. Извилистых оврагов нет, седловых точек мало.

А вот в том бенчмарке каждая функция в чём-то особенная. Например, функция Розенброка считается трудной для поиска глобального минимума из-за плоского извилистого оврага.

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

Факт. Эвристики и оптимальный поиск.

Ну хорошо, а чем очередь с приоритетами помогает? Всё равно нужно для каждой точки довести градиентный спуск до конца. Какая разница, в каком порядке это делать? А других эвристик (вернее, оптимизаций) по сравнению с multistart тут и нет.

Просто никто не думает о эвристиках в разрезе простых алгоритмов (вроде градиентного спуска).

Ну как же не задумывается, если для методов вроде вашего целое название придумали? Вы просто не интересовались, наверное.

Вот кусочек из статьи 1985 года:

A.H.G. Rinnooy Ran et al. A STOCHASTIC APPROACH TO GLOBAL OPTIMIZATION

Похоже, правда? Есть много статей — и старых, и новых. Просто погуглите.

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

Не проще.

https://arxiv.org/abs/1401.3894 — вот, кстати, пример метода с multi-start, в котором есть множество алгоритмов локального поиска и делается выбор, каким искать.

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

в миллионы раз менее подверженная застреванию в локальном оптимуме, чем существующие

Держать в памяти миллион точек — не очень-то практично. Для сложных нейронных сетей и пара точек не всегда в памяти помещается. :)

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

А почему не взяли, например, ONNX + ONNX Runtime или OpenVINO (он ещё и ускорит всё на процессорах Intel)?

Ну и важно понимать, что в тех условиях 1985 года, когда не было возможности использовать \LaTeX

Кстати, теоретическая возможность была. :) LaTeX появился в 1984, а TeX и вовсе в 1978. Плюс были и другие системы вёрстки в том числе и WYSIWYG (Page Maker, например).

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

Так это зависит от определения знания языка. «Выучил до уровня A2 за шесть месяцев» звучит вполне нормально. :)

По рабочей визе (Tier 2 Skilled worker) можно поменять работу.

Такая формулировка немного вводит в заблуждение. Виза Skilled Worker (Tier 2 General в прошлом) работодателя менять запрещает. Просто есть возможность попросить нового работодателя быстренько оформить новую визу, так что не придётся выезжать из страны.

Увы, нельзя, это нарушение правил. :(

Я думаю, что речь о том, чтобы создать словарь с двумя ключами: списком и информацией о странице.

К сожалению, ruff пока трудно назвать заменой flake8, так как сила последнего в плагинах, но штука классная.

Кстати, тут я неправ. Я смотрел на ruff когда он только появился, и мне стоило глянуть ещё раз, когда я писал свой комментарий. Он развивается с удивительной скоростью. Я уже заменил flake8 на ruff в паре проектов и очень доволен.

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Registered
Activity