Aspiring Data Science – Telegram
Aspiring Data Science
385 subscribers
465 photos
12 videos
12 files
2.15K links
Заметки экономиста о программировании, прогнозировании и принятии решений, научном методе познания.
Контакт: @fingoldo

I call myself a data scientist because I know just enough math, economics & programming to be dangerous.
Download Telegram
#featurselection #itmofs

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

Ха-ха, и уже в первом же примере использования у них концептуальная ошибка.

"Here is one of examples of feature selection improving the classification quality:

>>> from sklearn.datasets import make_classification
>>> from sklearn.linear_model import SGDClassifier
>>> from ITMO_FS.embedded import MOS

>>> X, y = make_classification(n_samples=300, n_features=10, random_state=0, n_informative=2)
>>> sel = MOS()
>>> trX = sel.fit_transform(X, y, smote=False)

>>> cl1 = SGDClassifier()
>>> cl1.fit(X, y)
>>> cl1.score(X, y)
0.9033333333333333

>>> cl2 = SGDClassifier()
>>> cl2.fit(trX, y)
>>> cl2.score(trX, y)
0.9433333333333334
As expected, the quality of the SVGClassifier’s results is impacted by the presence of redundant features in data set. We can see that after using of feature selection the mean accuracy increases from 0.903 to 0.943."
#books

How much I've made with Modeling Mindsets

"Let’s hear the numbers already
The book has gotten 73 reviews, 40 on Amazon and 33 on Leanpub.

I’ve sold 745 ebooks on Leanpub and earned $7,007.94

On Amazon, I’ve sold 900 print books and 296 Kindle ebooks, totaling €6,570.64

In total, I’ve earned €13,013 (=$14,155)

It took me around half a year to write the book. Not full-time since I also finished my Ph.D., did social media and wrote the newsletter. But let’s pretend for now that I worked for 6 months full-time, which would mean I earned €2168.83 (=$2.365,51) per month. Certainly not an amount of money to get rich from, but together with the income from my other books, I can sustain myself financially 🙏 (even though it’s less than I earned in my Ph.D.).

And the great thing about digital assets and books is: They may further generate income down the road. Modeling Mindsets still keeps selling."

https://mindfulmodeler.substack.com/p/how-much-ive-made-with-modeling-mindsets
#python #excel #microsoft

"Microsoft также добавила новую функцию PY, которая позволяет отображать данные Python в ячейках электронной таблицы Excel. Благодаря партнёрству с Anaconda, корпоративным репозиторием Python, популярные библиотеки Python, такие как Pandas, Statsmodels, Seaborn и Matplotlib, будут доступны в Excel. Расчёты Python выполняются в Microsoft Cloud, а результаты возвращаются в таблицу Excel. Пользователи Excel смогут создавать формулы, сводные таблицы и диаграммы на основе данных Python для визуализации тепловых карт, роевых диаграмм и скрипичных графиков.

«Я рад, что интеграция Python и Excel увидела свет, — говорит создатель Python, а ныне заслуженный инженер Microsoft Гвидо Ван Россум (Guido van Rossum), — Я ожидаю, что оба сообщества найдут новые интересные применения в этом сотрудничестве, расширив возможности каждого партнёра. Когда я присоединился к Microsoft три года назад, я и представить себе не мог, что такое возможно»."

https://3dnews.ru/1091868/microsoft-integrirovala-populyarniy-yazik-programmirovaniya-python-v-excel
#ann #karpathy #mlgems

Рецепт работы с нейронками от Андрея Карпатий:

1) Learn the data
2) Create baselines
3) Overfit
4) Regularize
5) Tune
6) Dominate

Удивили вот эти рекомендации:

verify loss @ init. Verify that your loss starts at the correct loss value. E.g. if you initialize your final layer correctly you should measure -log(1/n_classes) on a softmax at initialization. The same default values can be derived for L2 regression, Huber losses, etc.

init well. Initialize the final layer weights correctly. E.g. if you are regressing some values that have a mean of 50 then initialize the final bias to 50. If you have an imbalanced dataset of a ratio 1:10 of positives:negatives, set the bias on your logits such that your network predicts probability of 0.1 at initialization. Setting these correctly will speed up convergence and eliminate “hockey stick” loss curves where in the first few iteration your network is basically just learning the bias.

На них даже ссылаются в учебном примере tensorflow, где в задаче бинарной классификации нейронке с сигмоидой в последнем слое задают начальное смещение равное логарифму доли положительного класса. Я попробовал то же самое на своей задаче, но у меня в последнем softmax, и формулка не сработала. При конвертации в sigmoid лосс нетренерованной модели и правда стал нулём, но обучение это совсем не улучшило. У кого какой с этим опыт?

Ну и на сладенькое.

"Suffering is a perfectly natural part of getting a neural network to work well, but it can be mitigated by being thorough, defensive, paranoid, and obsessed with visualizations of basically every possible thing. The qualities that in my experience correlate most strongly to success in deep learning are patience and attention to detail.

Hyper-parameter optimization. There is a large number of fancy bayesian hyper-parameter optimization toolboxes around and a few of my friends have also reported success with them, but my personal experience is that the state of the art approach to exploring a nice and wide space of models and hyperparameters is to use an intern :). Just kidding.

Ensembles. Model ensembles are a pretty much guaranteed way to gain 2% of accuracy on anything. If you can’t afford the computation at test time look into distilling your ensemble into a network using dark knowledge.

Leave it training. I’ve often seen people tempted to stop the model training when the validation loss seems to be leveling off. In my experience networks keep training for unintuitively long time. One time I accidentally left a model training during the winter break and when I got back in January it was SOTA (“state of the art”)."

http://karpathy.github.io/2019/04/25/recipe/#2-set-up-the-end-to-end-trainingevaluation-skeleton--get-dumb-baselines
2
#tensorflow #bollocks

Больше 2 лет юзеры просят мудаков из команды tensorflow предоставить способ освобождения памяти GPU без завершения процесса. Конечно же, я в 2023-м налетел на эту проблему.

https://github.com/tensorflow/tensorflow/issues/36465
#astronomy

"На основе новых данных о поведении людей в длительных экспедициях, включая миссии на Международной космической станции, учёные из Университета Джорджа Мейсона (США) рассчитали минимальное количество астронавтов, необходимое для создания и поддержания колонии на Марсе. Научная статья по теме исследования пока не прошла рецензирование и находится на сайте arXiv. Однако свежие выводы учёных идут в разрез со всеми предыдущими исследованиями на эту тему.

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

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

Учёные запускали компьютерную симуляцию длительностью 28 виртуальных лет для групп колонистов от 10 до 170 человек. При всей совокупности заданных условий, а также с учётом комбинаций четырёх основных типов характеров людей, машина утверждает, что 22 человека вполне достаточно, чтобы колония на Марсе долго оставалась жизнеспособной."

https://3dnews.ru/1091913/dlya-vigivaniya-kolonii-lyudey-na-marse-dostatochno-22-priyatnih-v-obshchenii-astronavtov
👍1
#nvidia #stocks

"Квартальная отчётность NVIDIA будет опубликована завтра, а с начала прошлой недели курс акций компании уже вырос на 12 % в ожидании воодушевляющих результатов. По итогам вчерашней торговой сессии курс опустился на 2,77 % до $456,68 за акцию, но в ходе торгов он успел достичь исторического максимума на отметке $481,87. Всего же с начала этого года акции NVIDIA выросли в цене на 219 %."

https://3dnews.ru/1091896/aktsii-nvidia-utroilis-v-tsene-s-nachala-goda-i-na-etoy-nedele-obnovili-istoricheskiy-maksimum
#numba #gpt #optimization #python #ai

Такая история: в процессе оптимизации питоновской функции с помощью numba выяснилось, что njit-нуть её не получится - она использует модуль itertools для получения списка комбинаций индексов массива. Думаю, была, не была, попросил чат ГПТ сгенерить нативный питоновский код для combinations без модуля itertools. ИИ справился. Потом попросил функцию модифицировать чтоб она njit-тилась. И это без проблем выполнилось, и сразу рабочий код. Будущее уже наступает. Или наступило.

import numpy as np
from numba import njit

@njit
def generate_combinations_recursive_njit(sequence, r):
if r == 0:
return np.empty((1, 0), dtype=sequence.dtype)
if sequence.size == 0:
return np.empty((0, r), dtype=sequence.dtype)

first, rest = sequence[0], sequence[1:]

without_first = generate_combinations_recursive_njit(rest, r)
with_first = generate_combinations_recursive_njit(rest, r - 1)

result = np.empty((without_first.shape[0] + with_first.shape[0], r), dtype=sequence.dtype)

result[:without_first.shape[0], :] = without_first
for i in range(with_first.shape[0]):
result[i + without_first.shape[0], 0] = first
result[i + without_first.shape[0], 1:] = with_first[i, :]

return result

sequence = np.arange(4)
r = 2

combinations_array = generate_combinations_recursive_njit(sequence, r)
combinations_list = sorted(combinations_array.tolist())
print(combinations_list)


A Skynet funding bill is passed in the United States Congress, and the system goes online on August 4, 1997, removing human decisions from strategic defense. Skynet begins to learn rapidly and eventually becomes self-aware at 2:14 a.m., EDT, on August 29, 1997.
#vikram #astronomy

"Индийская миссия «Чандраян-3» (Chandrayaan-3) вписала своё имя в историю покорения космоса, успешно произведя мягкую посадку возле южного полюса Луны. Всего несколько дней назад в этом регионе потерпел неудачу российский аппарат «Луна-25». Индия стала четвёртой страной, совершившей мягкую посадку на Луне, и первой, которая сделала это на Южном полюсе — малоисследованной области, которая предположительно содержит водяной лёд.

Миссия «Чандраян-3» стартовала с площадки Космического центра им. Сатиша Дхавана (Satish Dhawan Space Centre) 14 июля. 5 августа космический корабль вышел на лунную орбиту, 17 августа от него отделился посадочный модуль «Викрам» (Vikram) с луноходом «Прагъян» (Pragyan). Это уже вторая попытка Индии произвести посадку аппарата на Луне — в 2019 году аппарат миссии «Чандраян-2» врезался в её поверхность.

На следующем этапе миссии «Чандраян-3» будет развёрнут луноход «Прагъян», который займётся исследованием местности в течение одного лунного дня (14 земных) и проведением научных экспериментов — в первую очередь это будет спектрометрия, которая поможет определить состав поверхности Луны."

https://www.youtube.com/watch?v=x5hIrH908ZU

https://3dnews.ru/1091928/apparat-indiyskoy-missii-chandrayan3-uspeshno-sel-v-rayone-yugnogo-polyusa-luni
#featureselection

Примечательна планетарная модель групп коррелирующих факторов.

https://www.youtube.com/watch?v=P7PhGneBFcI
#python #pandas #numpy #codegems

В очередной раз убедился, как паршиво местами "оптимизирован" пандас.
#windows #tricks

СКМ, блд ) Что ж вы, и правда, раньше молчали?

"Оказывается, всё это время можно было заблокировать прыгающие процессы в диспетчере задач Windows 7/10/11 с помощью Ctrl.

«Знаете ли вы, что если вы удерживаете Ctrl, то это приостанавливает обновление диспетчера задач и означает, что имена процессов не перемещаются и их легче выбирать, когда вы сортируете нужные процессы по использованию различных ресурсов ПК», — сообщил менеджер Microsoft Джен Джентльман.

Почему он решил рассказать об этом только сейчас — загадка."

А вообще, в этой истории прекрасно всё. Джен(нифер) вроде женское имя. Но фамилия Джентльмен? Это псевдоним? )
#featureselection #entropy #histogram #binning #diogenes #astropy

Один важнейший аспект своего отборщика признаков я совершенно упустил - это построение гистограмм для оценки энтропии и взаимной информации. Для улавливания связей на этапе тестирования мне хватало равномерного разбиения (непрерывной переменной) на N бинов, я просто для быстроты разработки взял KbinsDiscretizer с параметром strategy='uniform' и n_bins=4. Но даже там есть ещё варианты quantile и kmeans, их я думал потестить позже. Однако при попытке различить коллинеарные факторы на более "оригинальные" и "зависимые"/"зашумлённые" такого простого подхода перестало хватать. Да и кто сказал, что хорошо использовать одно и то же число бинов для всех факторов?

Я вспомнил про формулы Стёрджеса и прочие, довольно много вариаций оказалось реализовано в нампае. Астропай порадовал наличием расчёт байесовской гистограммы с переменным размером бина. Я заценил на своих данных, посмотрим, какая будет дискриминирующая способность всех этих подходов.
Forwarded from DLStories
Увидела в одном из чатов обсуждение AGI (да, опять) и того, погубит ли оно в конце концов человечество. Одна из причин страха такого развития событий — наблюдения, что большие модели типа GPT-4 часто начинают "внезапно" демонстрировать способности, которых у моделей поменьше, кажется, нет и в помине. Ну, например, если обучить языковую модель с количеством параметров 10B, то она, внезапно, начинает уметь в zero-shot question answering или отгадывание загадок. А у моделей с меньшим количеством параметров, сколько их ни обучай, таких способностей не возникает.
(на всякий случай: количество 10B и примеры задач взяты тут с потолка. Надеюсь, общая идея понятна)

Этот эффект называется "emerging abilities of Large Language Models". Из-за него кажется, что большое количество параметров каким-то магическим образом позволяет модели развить умение решать сложные задачи, развить абстрактные высокоуровневые способности типа reasoning, abstract thinking, понимание связей, юмора и т.п. И если эту мысль экстраполировать, то появляется идея, что при еще большем увеличении количества параметров модели у нее также внезапно может появиться и условное "сознание". На этом и основываются многие страхи AGI-апокалипсиса.

Так вот. Это все напомнило мне одну статью, про которую я уже давно хотела написать в канал, но как-то руки не доходили. Называется она "Are Emergent Abilities of Large Language Models a Mirage?". В ней авторы говорят, что эффект emerging abilities — это мираж. И на самом деле его нет (или почти нет). А способности к reasoning, abstract thinking и т.п. у модели появляются не внезапно, а очень даже предсказуемо. Вся проблема в том, что мы неправильно считаем метрики.

Давайте пример. Возьмем задачу "отгадай загадку". Модели подается на вход загадка на естественном языке. В ответ модели нужно выдать ответ тоже на естественнос языке.
В качестве метрики качества ответов LLM на такой задаче обычно берется exact string match. Т.е. metric=1, если модель ввыдала текст, полностью совпадающий с правильным ответом, и metric=0 в любом остальном случае. И вот если смотреть на то, как меняется эта метрика для моделей с разным количеством обучаемых параметров, тут как раз и наблюдается тот самый внезапный эффект. Маленькие модели получают acc = eps, а модели тяжелее условных 10B параметров внезапно показывают acc>0.5.

В чем тут проблема? А в том, что метрика супердискретна. Она не учитывает то, как при увеличении параметров модели меняется распределение вероятностей модели на ответы. И на самом деле дела обстоят так: при увеличении размера модели она научается давать все больше вероятности адекватным вариантам ответа на загадку, и все меньше — бредовым. Короче, на самом деле учится все лучше и лучше решать задачу. И при каком-то значении размера модели она становится способна давать настолько много вероятности правильным ответам, что нашу дискретную метрику exact string match "прорывает" от почти 0 сразу до большого значения.

Короче, мысль такова: на самом деле способности по большинству задач растут вполне предсказуемо с ростом размера моделей. Заменив дискретные метрики на более непрерывные, авторы этой статьи показали, что по крайне мере на 92% задач из Big Bench никакого "внезапного" прорыва у больших моделей не происходит. Качество на них растет плавно и предсказуемо при увеличении размера моделей.

А еще авторы показали, что такой же эффект "emerging ability" можно смоделировать и на обычных автоэнкодерах на датасете CIFAR100. Нужно только поменять метрику качества на чуть более дискретную, чем обычно используется (об этом в разделе 5 статьи)

Вот так. Конечно, этот результат не означает, что у моделей точно никаких "emerging abilities" быть не может, и сознание она никак не получит. Нет. Но это, как минимум, повод задумываться над всеми "странными" результатами, которые получают исследователи, и лучше их изучать. А не просто экстраполировать и сразу делать страшные выводы.

📄Статья
Forwarded from New Yorko Times (Yury Kashnitsky)
Собес с HuggingFace в 2019 и бодрое тестовое
#career #interview #fail #ml #petproject

На фоне новости о том, что HuggingFace привлек еще $235kk и уже от техгигантов (Google, Amazon, Nvidia, Intel, IBM Salesforce, Qualcomm и AMD), решил поведать 😃 как я с ними собеседовался в конце 2019. Я с удивлением обнаружил, что Томас Вульф живет в Утрехте - взял да и написал ему в личку. Встретились в кафе, потрещали (Томас уже тогда работал из дома/кафе, до того как это стало мейнстримом, тогда называл это “дикой жизнью”). Томас – очень простой и приветливый чел, из ряда тех, с кем общаешься-общаешься, а потом возвращаешься к мысли “но он же очень талантливый и работоспособный парень, вот скромняга!”. Все в духе истории, как HF вообще зарождался (”ребята, мы хотим по пиву, а потом есть идеи покодить вечерком – BERTа на PyTorch переложить, кто с нами?” (с) Thomas Wolf, EMNLP 2018).

В целом деньгами HF на тот момент не баловал, да и я тогда по визовым ограничениям и не мог бы работать на стартап. К тому же я прям совсем не рассматривал вариант работы из дома (кек). Наконец, тогла в 2019 совершенно не было понятно, как ребята будут монетизироваться. Но решил пособеседоваться, челлендж ведь. После бодрого знакомства с CEO Клементом первый шаг – тестовое задание.

Томас придумал веселое тестовое, которое впрочем точно устарело после очередной мини-революции в мультимодалке” (CLIP и в целом text2image). Так что пошарю в открытый доступ.

Мне задача понравилась, и я решил поботать просто по фану. Для контекста: дело близилось к Рождеству, никто уже на работе не впахивал, у меня две недели как родилась дочь (и, на удивление, как все оправились от первого шока с бессоницей, дальше высвободилось немало времени, т.к. существо в осномном спит). Ковид уже пошел по миру, но мы не догадывались. Я совсем недавно закруглился с млкурсом. В-общем, идеальная ситуация, чтоб душевно покодить пет-проджект, каким я рассматривал тестовое от HF.

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

Сразу скажу, столько вкладываться в take-home точно не стоит, по оформлению оно лишка вылизанное (docker-compose, Streamlit, подробный ридми, гифки, все дела…). В инструкции Томаса советовалось “потратить на задание 2-3 часа”, что, конечно, немного лицемерно, но оптимум где-то посередине – часов 8. То что происходит в репе – почти безнадежно устарело с появлением CLIP. Но на оформление, структуру репы и презентацию тестового можно поглядеть.

К слову, я и не прошел. Ревьюеры похвалили как раз оформление, но придрались к мелочам типа того, что я не выставил 0 в attention mask для паддинга и что-то им мой пулинг-слой не зашел, нет разбивки на батчи и т.д.

Хоть я б в HF и не пошел, все равно было обидно. Так что с горя победили в гугловском NLP-соревновании на кекле и удалось закрыть мастера, а через месяц и работу сменить.
Please open Telegram to view this post
VIEW IN TELEGRAM