TheFounder

TheFounder

Здесь будет интересно всем, кто увлекается нейросетями, хочет стать разработчиком, создать свой IT-стартап... Ну, или просто любит и хочет изучать код :)
На Пикабу
146 рейтинг 6 подписчиков 0 подписок 104 поста 0 в горячем
1

Что такое байесовские нейронные сети?

Что такое байесовские нейронные сети? IT, Программирование, Машинное обучение, Нейронные сети

Байесовские нейронные поля (Bayesian Neural Fields, Bayes NF) нужны для моделирования сложных непрерывных функций, которые выражают трехмерные формы, поля света и всякие физические явления.

Но в ML их используют другим образом.

Параметры модели не фиксированы, а рассматриваются как случайные величины с вероятностными распределениями. Мы строим прогнозы и учитываем неопределенность.

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

Bayes NF нужно обучать не как классические детерминированные модели, а как стохастические модели. Веса и другие параметры сети не имеют фиксированных значений, а описываются вероятностными распределениями.

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

Тут еще важно упомянуть вариационный вывод. Он позволяет приближаться к сложным апостериорным распределениям параметров модели.

Мы пытаемся найти более простое распределение, которое приближает истинное апостериорное распределение, и минимизируем расхождение между этими распределениями.

Истинные апостериорные распределения обычно слишком сложны для точного вычисления. Аппроксимация — это компромисс между скоростью и упрощением.

Есть еще метод Монте-Карло с цепями Маркова (Markov Chain Monte Carlo, MCMC). Он используется для сэмплирования из сложных апостериорных распределений.

Напоминаем, что сэмплирование — это такое предсказание на основе небольшой выборки о свойствах данных.

Например, если у нас есть 1000 шариков и мы вытащили три, и два из них оказались синими, значит, около 66 шариков — синие, условно.

Цепь Маркова сэмплирует значения параметров из апостериорного распределения с каждым новым шагом. Происходит "уточнение". С каждым новым шагом мы производим все более точную выборку и получаем все более точные оценки.

Однако MCMC требует больше вычислительных ресурсов, поэтому выбор между вариационным выводом и Монте-Карло зависит от задачи и доступных вычислительных мощностей.

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

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

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

Показать полностью 1
2

Зачем мне энтропия в ML

Зачем мне энтропия в ML IT, Программирование, Нейронные сети, Машинное обучение

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

Иначе продакшен будет бесконечно искать эффективные данные для своих моделей…

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

Знаешь теорию энтропии и информации – знаешь КПД данных.

Энтропия, взаимная информация, скорость передачи данных, оптимизация кодирования и шума в каналах – все это позволяет инженерам и аналитикам грамотно оценивать, насколько полезны те или иные данные.

Важно не только количество, но и качество.

Предположим, у вас тысячи запросов интернет-пользователей.

Как понять, что эта информация вообще может быть полезна в оценке эффективности маркетинга? – только через анализ энтропии.

Энтропия и взаимная информация используются для оценки информативности признаков.

Вместо того, чтобы уповать на рандом – вы выбираете только качественные параметры.

А они уменьшают неопределенность целевой переменной и исключают избыточные или нерелевантные признаки.

А это плюс к скорости модели и минус к ее объему.

Энтропия используется в вероятностных моделях (например, Naive Bayes, Hidden Markov Models) для оценки неопределенности и информативности апостериорных распределений.

Энтропия — всё для оценки минимальной длины кодирования данных в алгоритмах сжатия, Хаффмана и Lempel-Ziv, с целью уменьшения объема данных для хранения и передачи.

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

Так что практикуемся, но и не забываем про теорию...

Показать полностью 1
1

Что делать, если тебя никто не понимает?

Что делать, если тебя никто не понимает? IT, Программирование, Нейронные сети, Машинное обучение

Не париться. Кому надо, тот поймёт. А вообще…

У технарей это в крови — объяснять так, чтобы тебя никто, кроме таких же технарей, как ты, не понимал. Но реальность такова, что ml-инженер — это не просто человек, который накидывает код и тренирует модели. Это тот, кто может связать технику с реальными бизнес-задачами. А для этого нужно уметь объяснять.

Ведь твой руководитель — не технарь. Бизнес-аналитики тоже. Отдел продаж, менеджеры, заказчики — им важен результат, но вся эта техническая муть им непонятна. А твоя задача — донести до них то, как именно она сможет заработать для них деньги.

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

Именно бизнес-заказчики решают, какой проект получать финансирование. И чем проще ты им объяснишь пользу своей модели, тем больше шансов, что проект запустят. А тебе заплатят сумму с несколькими нулями)

И ещё… Ты будешь взаимодействовать с разными людьми: разработчиками, аналитиками, руководителями проектов. И если сможешь донести свою идею так, чтобы её все поняли и оценили, то работа в команде будет соответствовать ожиданиям на 100%.

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

Так как сделать так, чтобы тебя все понимали?

Учись переводить сложные технические термины на язык пользы. Объясняй так, как будто разговариваешь с кем-то, кто вообще далёк от ML. Не перегружай деталями, фокусируйся на конечном результате: что это даст бизнесу и почему это важно.

Так что если реально хочешь быть специалистом на вес золота, то прокачивай не только харды, но и софты.

Показать полностью 1
2

Как снять проклятие размерности?

Как снять проклятие размерности? Программирование, IT, Нейронные сети, Машинное обучение, Длиннопост

Методы понижения размерности важны для работы с высокоразмерными данными, когда нужно визуализировать данные в меньших измерениях без потери существенной информации.

И упростить задачу.

Напоминаем, что чем выше размерность –  тем больше шансов на переобучение модели. Реальная проблема, название ее: "Проклятие размерности"...

Лаконично, да?

Есть три ключевых метода: PCA, t-SNE и UMAP, имеют различные подходы и особенности.

PCA (Principal Component Analysis) – метод линейного понижения размерности, который сводится к поиску новых ортогональных осей, на которых данные имеют наибольшую вариацию. 

Он используется, когда требуется простое и интерпретируемое понижение размерности.

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

Иначе, смотреть не на поведение волосков, а цвет шерсти)

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

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

Однако PCA имеет ограничения. Это линейный метод, и он не подходит для работы с нелинейными зависимостями, которые часто встречаются в тексте, например.

t-SNE (t-Distributed Stochastic Neighbor Embedding) – метод нелинейного понижения размерности, предназначенный для визуализации данных в 2D или 3D пространстве.

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

Если есть признаки лиц на изображениях – t-SNE может проецировать эти данные в 2D пространство, где лица с похожими чертами окажутся рядом.

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

Затем t-SNE находит такое распределение точек в низкоразмерном пространстве, которое лучше всего воспроизводит эти вероятности. Правда, метод очень медленный).

UMAP (Uniform Manifold Approximation and Projection) – самый современный  метод нелинейного понижения размерности, который работает быстрее, чем t-SNE.

И при этом сохраняет как локальные, так и глобальные структуры данных лучше, чем t-SNE. 

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

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

UMAP основан на теории топологии и использует графы ближайших соседей для построения репрезентации данных.

Он создает граф, который соединяет точки в высокоразмерном пространстве на основе их близости, затем проектирует этот граф в низкоразмерное пространство.

Вжух — и проклятие пропало :)

Показать полностью 1
3

Чему мы можем научиться, обучая ИИ?

Чему мы можем научиться, обучая ИИ? Программирование, IT, Машинное обучение, Нейронные сети

На самом деле — многому, и не только хардам.

Критическое мышление на максималках

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

Обучение, как стиль жизни

Модели, которые мы строим, никогда не идеальны с первого раза. Постоянные итерации, тесты, доработки — это рутина, которую принимает каждый ML-инженер. И вот что важно: как и твои модели, ты тоже должен учиться всегда. Мало быть крутым здесь и сейчас, нужно держать руку на пульсе, ведь индустрия меняется с бешеной скоростью. Учёба — не обуза, а шанс сделать себя лучше.

Ответственность

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

Делать сложное простым

Окей, ты можешь создавать сложные модели. Но можешь ли ты объяснить их смысл так, чтобы даже твоя бабушка поняла? Потому что бизнесу не нужны твои проблемы с кодом — им нужен понятный результат. Руководители и бизнес-аналитики не знают, что такое градиентный бустинг или сверточные сети, но им нужно знать, как это повлияет на их прибыль. И вот здесь ты учишься переводить язык моделей в язык бизнеса, а это… Больше, чем просто навык. Это залог успеха.

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

Показать полностью 1
6

Да нафига мне ваш этот C++?!

Да нафига мне ваш этот C++?! Программирование, IT, Нейронные сети, Машинное обучение

Начнем с того, что Python — язык высокой абстракции.

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

Вы — слуга интерпретатора языковой среды.

Вы — лишь пешка языка, а не властитель программирования...

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

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

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

Буквально с разницей в два раза...

Плюсом в вашем любимом TensorFlow есть возможность дописать операцию на C++, если требуется добавить специфическую операцию, которой нет в библиотеке, или если её стандартная реализация не удовлетворяет требованиям по производительности.

Библиотеки, такие как CUDA, позволяют напрямую писать код для выполнения на GPU, и многие высокопроизводительные фреймворки, такие как PyTorch, предоставляют возможность интеграции кода на C++ для работы с GPU.

А вообще. Вы просто можете провести распараллеливание операций.

И это не говоря о возможностях регулировать вычисления под конкретные типы процессоров.

Ну и самое главное. А как же продакшен? Думаете все, что вокруг, написано на Питоне?

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

Для этих целей Python может быть недостаточно быстрым, особенно если модель должна обрабатывать миллионы запросов в реальном времени.

В таких случаях модель может быть переписана или оптимизирована на C++ для обеспечения минимальных задержек в выполнении.

Например, в системах с низкими задержками (low-latency systems), т.е системах предсказаний в финансовых или медицинских приложениях, использование C++ позволяет минимизировать время обработки.

Будет свободное время — попробуйте выучить этот несчастный язык.

C++ про тех, кто пишет музыку, а не читает ноты.

Показать полностью 1
1

Можно ли обучать ИИ без доступа к реальным данным компании?

Можно ли обучать ИИ без доступа к реальным данным компании? Программирование, IT, Нейронные сети, Машинное обучение

Ответ — да, но с некоторыми трудностями.

А трудности в шифровании.

Ведь для соблюдения злосчастного NDA и конфиденциальности данных компании придется переформулировать всю информацию в закореженные цифры да символы.

Традиционные системы в виде симметричного или асимметричного шифрования не дают нам совершать математические операции с данными.

Только прочитать.

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

Работает особая структура шифрованного текста, которая позволяет перенести вычисления, такие как сложение и умножение, в шифрованное пространство.

Существует несколько типов гомоморфного шифрования, которые различаются по своим возможностям и вычислительной сложности.

Полное гомоморфное шифрование (FHE — Fully Homomorphic Encryption) предоставляет возможность выполнять как сложение, так и умножение неограниченное количество раз.

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

Многочисленные исследовательские усилия сосредоточены на разработке схем, которые могут ускорить эти процессы, сохраняя при этом их безопасность.

Например, схемы CKKS и BGV являются наиболее известными представителями частичного гомоморфного шифрования.

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

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

Это рекурсивный процесс, почти убийственный.

Чтобы справиться с этой проблемой, современные схемы, тот же CKKS или BGV, применяют "bootstrapping".

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

Короче говоря. Требуйте от своих работодателей, чтобы они выдавали в открытый доступ все паспортные и медицинские данные!

Да кому они нужны?

А то еще им данные шифровать.

Показать полностью 1
1

Естественный отбор в ML?

Естественный отбор в ML? Программирование, IT, Машинное обучение, Нейронные сети

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

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

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

Дальше процесс состоит из нескольких этапов:

Оценка приспособленности (fitness function) выполняет ключевую роль в процессе эволюции популяции. Она является функцией, которая для каждого индивида возвращает числовое значение, отражающее его "качество" или степень близости к решению задачи.

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

Селекция представляет собой процесс выбора индивидов для участия в генерации потомков.

Существует несколько способов реализации селекции, включая метод рулетки (roulette wheel selection), турнирную селекцию (tournament selection) и ранговую селекцию (rank selection).

Например, в методе рулетки вероятность выбора индивида пропорциональна его приспособленности.

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

Скрещивание (crossover) — это процесс создания потомков на основе двух родительских решений.

Классический метод — одноточечное скрещивание (single-point crossover), когда родители обмениваются частями генома после случайной точки разреза.

Существуют также методы двухточечного и равномерного скрещивания (uniform crossover), где части генома могут быть обменены в нескольких точках или случайно для каждого гена.

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

Часто применяется побитовая мутация (bit-flip mutation), при которой случайно выбранные биты в бинарной строке меняются с 0 на 1 или наоборот.

В вещественных векторах мутация может быть реализована как добавление случайных шумов к элементам вектора.

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

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

Показать полностью 1
Отличная работа, все прочитано!