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
Forwarded from asisakov
ReLU, GELU, SiLU и ELU

Несколько лет назад на курсах нам рассказывали только про несколько функций активации: sigmoid, tanh, ReLU. Было круто, когда кто-то дополнительно ещё рассказывал про Leaky ReLU. И всего этих четырёх функций активации было достаточно, чтобы шатать сеточки.

Буквально несколько дней назад я слушал разбор статьи, где говорилось о том, что применение ReLU позволяет увеличить скорость инференса с небольшой потерей качества. Сравнение проводилось с функциями активации: GELU, SiLU. Я понял, что немного отстал от современных технологий в DL и решил погуглить и поделиться с вами.

Начнем с функции ReLU (Rectified Linear Unit). Эта функция активации имеет форму f(x) = max(0, x), что делает ее чрезвычайно эффективной для операций с большим количеством признаков, поскольку она увеличивает нелинейность модели без затрат на вычислительные ресурсы и без риска исчезновения градиента. Одним из главных недостатков ReLU является проблема «мертвых нейронов», когда нейроны перестают активироваться и вносить вклад в обучение сети из-за отрицательных значений на входе.

GELU (Gaussian Error Linear Unit), впервые представленная в 2016 году, стала более гладкой альтернативой ReLU. Функция GELU умножает входное значение на вероятность того, что значение будет активировано, что делает ее подходящей для использования в трансформерах и сетях с self-attention. Такая структура приводит к более динамичной адаптации нейронов к разным фазам обучения, позволяя достигать лучших результатов на сложных задачах.

Следующая в нашем списке — SiLU (Sigmoid Linear Unit). Эта функция активации представляет собой произведение входа на сигмоидную функцию от этого же входа, f(x) = x * σ(x). SiLU показала хорошие результаты в экспериментах по глубокому обучению, часто превосходя ReLU по разнообразным метрикам.

ELU (Exponential Linear Unit) добавляет еще одну интересную возможность в арсенал функций активации. В отличие от ReLU, ELU вводит отрицательные значения для отрицательных входов, что помогает сохранять более богатую информацию о распределении входных данных. Функция имеет форму f(x) = x, если x > 0, и f(x) = α(exp(x) - 1), если x ≤ 0, где α — параметр, обычно равный единице. Это улучшает скорость сходимости модели.

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

Пояснение с кодом есть тут
Дополнительное чтиво: 1, 2

#dl #code
1
Forwarded from asisakov
Советы от грандмастера

В отложенных для просмотра вкладок завалялось видео с выступлением Стаса Семенова. Если кто не знает, то это ex-top-1 kaggle grandmaster, который сейчас работает квантом.

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

1. Преобразование выхода модели функциями, смещающими распределение предсказаний в более уверенные предикты

2. Отбор только k-ых наблюдений во временных рядах, где соседние точки имеют очень близкие значения (например в HFT)

3. Расчёт критериев, показывающих похожесть 2 признаков

Если вам есть что докинуть, пишите в коменты.

P.S. Кстати, есть конспект от Дэна
mosteller_fifty_challenging_problems_in_statistics.pdf
4.9 MB
#probability

Советую порешать задачки по теорверу ) Классная книжка, читал её школьником и благодаря ей начал программировать (на qbasic).
1
#simulation #optimization

Интересная идея о том, как ускорять симуляции с помощью ML и тем самым помогать быстрой оптимизации. Действительно, почему бы и и нет! Сначала собираем входные параметры системы +итоги симуляций, а дальше симуляцию пробуем заменять быстрой ML моделью.

https://www.youtube.com/watch?v=ohGeGfUCV_A
👍1
#c ++ #bufferoverflow #security

Отчёт ONCD подчёркивает, что около 70 % всех уязвимостей в системе безопасности, выявленных инженерами Microsoft в 2019 году и Google в 2020 году, были связаны именно с нарушениями безопасности памяти. Эта статистика ясно демонстрирует необходимость переосмысления подходов к разработке ПО в контексте нынешней стратегии кибербезопасности США.

В отчёте не только указывается на проблемы с C и C++, но и предлагается ряд альтернатив — языков программирования, признанных «безопасными для памяти». Среди рекомендованных Агентством национальной безопасности (NSA) языков находятся: Rust, Go, C#, Java, Swift, JavaScript и Ruby. Эти языки включают в себя механизмы, предотвращающие распространённые типы атак на память, тем самым повышая безопасность разрабатываемых систем.

https://3dnews.ru/1100993/beliy-dom-rekomendoval-otkazatsya-ot-c-i-c-v-polzu-bezopasnih-yazikov-programmirovaniya
#music #spiritualfront

I’ve seen a thousand mornings,
I’ve lived a million nights.
I’ve walked within the shadows
Beneath the city lights.
I‘ve fought a thousand battles,
I’ve been in a hundred wars.
And I will always live on
Behind closed doors.

https://www.youtube.com/watch?v=JQa6jjR7qoI
#featureselection #diogenes

в модуле filters Диогена уже 3k строчек кода. хотя вроде идеи основные такие простые и элегантные.
#featureengineering #featureselection #diogenes

n =100_000
a = np.random.rand(n)
b = np.random.rand(n)
c = np.random.rand(n)
d = np.random.rand(n)
e = np.random.rand(n)
f = np.random.rand(n)

y=a**2/b+f/5+np.log(c)*np.sin(d)

df = pd.DataFrame(
{
"a": a,
"b": b,
"c": c,
"d": d,
"e": e,

}
)

from mlframe.feature_selection.filters import MRMR

fs=MRMR(full_npermutations=10,baseline_npermutations=20,verbose=1,n_workers=1,parallel_kwargs=dict(temp_folder=r"R:\Temp"),)
fs.fit(X=df,y=y)


2024-03-02 05:39:17,484 - INFO - screen_predictors-line:1524 - Starting work with full_npermutations=10, min_nonzero_confidence=0.99000, max_failed=1
2024-03-02 05:39:49,214 - INFO - fit-line:2750 - MRMR selected 4 out of 5 features: [{'name': 'a', 'indices': (0,), 'gain': 0.33220730396336595, 'confidence': 1.0}, {'name': 'b', 'indices': (1,), 'gain': 0.5405325314273686, 'confidence': 1.0}, {'name': 'c', 'indices': (2,), 'gain': 0.20641517193369197, 'confidence': 1.0}, {'name': 'd', 'indices': (3,), 'gain': 0.07414164383695354, 'confidence': 1.0}]
2024-03-02 05:40:34,762 - INFO - fit-line:2983 - mul(log(c),sin(d)) is recommended to use as a new feature!
2024-03-02 05:42:12,619 - INFO - fit-line:2983 - mul(squared(a),reciproc(b)) is recommended to use as a new feature!
time: 3min 7s (started: 2024-03-02 05:39:05 +03:00)

Как тебе такое, Франциска Хорн? )
🔥3
#featureengineering #featureselection #autofeat

from autofeat import AutoFeatRegressor

model = AutoFeatRegressor(transformations = ('1/', 'exp', 'log', 'sin', 'sqrt', '^2', '^3'),featsel_runs=15)

new_df = model.fit_transform(df, y)


time: 5min 23s (started: 2024-03-02 06:07:07 +03:00)

Эмм.. А можно мне другой отборщик признаков? )
#reading

Читаю книжку, ловлю себя на мысли, что сноски внизу страницы должны кануть в небытиё (к чему эта саккада через всю страницу вниз-вверх? это сделано что, для моего мнимого удобства?). Как и чёртовы благодарности жёнам, детям, собакам автора. Равно как и "отзывы читателей", к примеру, в книжке Кохави, или как его, по А/Б тестам. Книжка была дрянной, а прекрасные "отзывы читателей" он расписал страницах на 5, не меньше.
👍1👎1