Это модное слово всё чаще используется в разговорной речи: обывателей плотнее окутывают угрозами бунта искусственного интеллекта и войны с роботами — с одной стороны, и рекламой нейросетевых продуктов — с другой. Отдельный котёл в аду — для тех, кто впаривает «курсы дата‑саентистов». А когда бедный юзернейм в поисках истины обращается к Гуглу своему любимому поисковику — то вместо простого ответа на простой вопрос, получает ещё больше вопросов — таких как тензорфлоу, сигмоида и, не дай Бог, линейная алгебра.
Разработчик ПО
Как языковая модель предсказывает следующий токен (часть 1)
Я обучил небольшой (порядка 10 миллионов параметров) трансформер по превосходному туториалу Let’s build GPT: from scratch, in code, spelled out Андрея Карпати. После того, как он заработал, я захотел максимально глубоко понять, как он устроен внутри и как создаёт свои результаты.
В исходной научной статье, как и во всех туториалах по трансформерам упор в основном делается на многоголовом самовнимании, — механизме, при помощи которого трансформеры обучаются множественным взаимосвязям между токенами, не используя рекурретности или свёртку. Ни в одной из этих статей или туториалов я не нашёл удовлетворительного объяснения того, что происходит после внимания: как конкретно результаты вычисления внимания превращаются в точные прогнозы следующего токена?
Я подумал, что могу пропустить несколько примеров промтов через обученный мной небольшой, но работающий трансформер, изучить внутренние состояния и разобраться в них. То, что казалось мне быстрым исследованием, оказалось полугодовым погружением, но дало результаты, которыми стоит поделиться. В частности, у меня появилась рабочая теория, объясняющая, как трансформер создаёт свои прогнозы, и эмпирические свидетельства того, что это объяснение, по крайней мере, правдоподобно.
Если вы знакомы с трансформерами и хотите сразу узнать вывод, то он таков: каждый блок трансформера (содержащий слой многоголового внимания и сеть с прямой связью) изучает веса, связывающие конкретный промт с классом строк, найденных в обучающем корпусе. Распределение токенов, соответствующее этим строкам в обучающем корпусе, и есть приблизительно то, что блок выводит как прогноз для следующего токена. Каждый блок может ассоциировать один и тот же промт со своим классом строк обучающего корпуса, что приводит к другому распределению следующих токенов, а значит, и к другим прогнозам. Окончательный результат работы трансформера — это линейное сочетание прогнозов каждого блока.
RUDOLPH: освещая дорогу к AGI
Как можно описать последние два года в области машинного обучения и искусственного интеллекта? Пожалуй, подойдет словосочетание «расцвет генеративных моделей». Очень ярко прослеживается тренд и на развитие мультимодальности (и особенно активно развиваются бимодальные модели, работающие на стыке модальностей текстов и изображений). Если нашумевшая модель ChatGPT, построенная на основе архитектуры InstructGPT и принципах Reinforcement Learning with Human Feedback, работает только в текстовой модальности и может отвечать на текстовые вопросы различной степени сложности, то её последователь GPT-4 работает уже в двух модальностях, текст и изображение, но выдает только текстовый ответ. Похожим образом работают и модели Flamingo, FROMAGe, Kosmos-1, MiniGPT-4, LLaVa. Можно заметить, что большинство моделей «однонаправлены», то есть либо переводят текст в соответствующее ему изображение, либо генерируют текстовый ответ по мультимодальному запросу.
Тем не менее, кажется, что модель, которая сможет работать с модальностями (в нашем случае, текстами и изображениями) равноценно и симметрично (то есть по факту решать zero-shot или после файнтюнинга все задачи на стыке двух модальностей, в том числе и генеративные) сможет более правильно оценивать совместные вероятности «токенов» текста и изображения и за счёт этого более качественно решать каждую из задач в отдельности (описывать изображения, генерировать изображения по тексту, отвечать на вопросы по тексту, отвечать на вопросы по изображениям, распознавать рукописный текст итд). Назовём такую способность модели гиперзадачностью (hyper-tasking).
Чтобы проверить гипотезу, сформулированную выше, мы задумались над модификацией генеративной модели Kandinsky 1.0 (ruDALL-E 12B), а именно над изменением процесса обработки входной последовательности. Результатом наших экспериментов стала модель RUDOLPH (RUssian Decoder On Language Picture Hyper-tasking), которая представляет собой авторегрессионную модель, способную решать разные типы задач в текстово-визуальном домене.
Финансовые графики для вашего приложения
Поиск нужных графиков отнимает время и несет много вопросов. Сегодня хочу поделиться своим опытом в выборе финансовых графиков, для экономии вашего времени и сил.
В статье расcмотрю три основных для меня библиотеки, сделаю сравнение и дополню комментариями из личного опыта.
Оконные функции SQL простым языком с примерами
Привет всем!
Сразу хочется отметить, что данная статья написана исключительно для людей, начинающих свое путь в изучении SQL и оконных функций. Здесь могут быть не разобраны сложные применения функций и могут не использоваться сложные формулировки определений - все написано максимально простым языком для базового понимания.
P.S. Если автор что-то не разобрал и не написал, значит он посчитал это не обязательным в рамках этой статьи)))
Для примеров будем использовать небольшую таблицу, которая показывает оценки учеников по разным предметам. В БД табличка выглядит следующим образом
Как работает ChatGPT: объясняем на простом русском эволюцию языковых моделей с T9 до чуда
В последнее время нам почти каждый день рассказывают в новостях, какие очередные вершины покорили языковые нейросетки, и почему они уже через месяц совершенно точно оставят лично вас без работы. При этом мало кто понимает — а как вообще нейросети вроде ChatGPT работают внутри? Так вот, устраивайтесь поудобнее: в этой статье мы наконец объясним всё так, чтобы понял даже шестилетний гуманитарий!
Интеграция QUIK в инфраструктуру или API
Торговая система QUIK [ссылка удалена мод.] для большинства серьёзных игроков рынка является очень популярной системой предоставления своим клиентам интерфейса для торговли ценными бумагами. Но в большинстве своём внутренности этой системы, как и любого коммерческого продукта являются закрытыми, в связи с чем могут возникать проблемы интеграции во внутреннюю инфраструктуру предприятия. В этой статье будут рассмотрены возможные механизмы интеграции QUIK в системы предприятия являющегося клиентом брокера или самостоятельным брокером.
Готовимся к релизу в App Store. Инструкция для новичков и лайфхаки
Подготовили гайд для заказчиков, которые занимаются публикацией приложения самостоятельно. Рассказываем о предрелизных хлопотах: как создать аккаунт разработчика, сколько времени заложить на оформление D-U-N-S number, какие скрины подготовить для стора.
Нестандартная кластеризация, часть 3: приёмы и метрики для кластеризации временных рядов
Часть вторая — DBSCAN
Часть третья — кластеризация временных рядов
Часть четвёртая — Self-Organizing Maps (SOM)
Часть пятая — Growing Neural Gas (GNG)
Пока другие специалисты по машинному обучению и анализу данных выясняют, как прикрутить побольше слоёв к нейронной сети, чтобы она ещё лучше играла в Марио, давайте обратимся к чему-нибудь более приземлённому и применимому на практике.
Кластеризация временных рядов — неблагодарное дело. Даже при группировке статических данных часто получаются сомнительные результаты, что уж говорить про информацию, рассеянную во времени. Однако нельзя игнорировать задачу, только потому что она сложна. Попробуем разобраться, как выжать из рядов без меток немного смысла. В этой статье рассматриваются подтипы кластеризации временных рядов, общие приёмы и популярные меры расстояния между рядами. Статья рассчитана на читателя, уже имевшего дело с последовательностями в data science: о базовых вещах (тренд, ARMA/ARIMA, спектральный анализ) рассказываться не будет.
Y-метод — действительно простой способ собрать кубик Рубика
Введение
В статье рассматривается «Y-метод» сборки кубика Рубика — его легко понять и запомнить. Он основан всего на одной последовательности, которая называется «Y-движение». Поняв этот алгоритм, вы навряд ли забудете как собрать кубик самостоятельно.
Объяснение фильтра Калмана в картинках
Я обязан рассказать вам о фильтре Калмана, потому что он выполняет просто потрясающую задачу.
Как ни удивительно, о нём, похоже, знают немногие разработчики ПО и учёные, и это печалит меня, потому что это очень обобщённый и мощный инструмент для объединения информации в условиях присутствия неопределённости. Иногда его способность извлечения точной информации кажется почти магической, а если вы думаете, что я слишком много болтаю, то взгляните на это видео, в котором я показываю, как фильтр Калмана определяет ориентацию свободно плавающего тела, посмотрев на его вектор скорости. Потрясающе!
Как я проходил интервью на проектировщика FPGA для космических кораблей Blue Origin
Однажды я решил ответить на сообщения в LinkedIn от рекрутерши безосовской компании Blue Origin, которая занимается разработкой и запуском космических аппаратов. Затем я прошел два раунда интервью: скрининг и 6-часовой марафон с дюжиной инженеров и менеджеров. Я не могу рассказать вопросы или описать диалоги с интервьирующими, потому что я подписал бумагу что не буду этого делать, но покажу пару вещей, о которых зашла речь еще до подписания бумаги, а также дам совет тем, кто хочет это повторить (совет кстати может быть применим не только при устройстве к Безосу, но и к Маску или Рогозину).
Одновременно с Blue Origin я интервьировался в другую компанию, интервью в которую по времени было такое же - час скрининга с инжиниринг-менеджером и шесть часов детальное интервью - но содержание было соовсем другое. Вообще обычно в электронных компаниях такое интервью - это просто марафон задачек на микроархитектуру (всякие извращенные FIFO, арбитры, кэши, кредитные счетчики), каверзные вопросы про тайминг (доходит до time stealing/time borrowing), пересечение тактовых доменов, дюжина способов оптимизации динамического энергопотребления при проектирования на уровне регистровых передач итд.
Но в компании Безоса все было по другому. Сначала нужно было написать эссе на тему "Что я думаю о космических кораблях бороздящих просторы Вселенной". Я написал следующее:
Архитектура Вселенной, часть 1: Сознание
'По одной капле воды человек, умеющий мыслить логически, может сделать вывод о возможности существования Атлантического океана или Ниагарского водопада, даже если он не видал ни того, ни другого и никогда о них не слыхал' - Артур Конан-Дойль, «Этюд в багровых тонах».
Меня всегда восхищали древние философы, которые не имея никаких инструментов познания мира кроме собственного разума, бесстрашно погружались в пучины тайн мироздания. С помощью одних лишь только рассуждений они обретали исключительно глубокое понимание принципов работы механизма Вселенной, тем самым расширяя наши представления о мире.
Трудно переоценить влияние философии на науку, так как наука произошла именно от философии. Использующаяся для формализации процесса рассуждений математика стала первенцем философии. Даже сами слова "философия" и "математика" произошли из терминов религиозной школы одного из величайших философов античности - Пифагора. Физика, названию которой мы обязаны другому великому античному философу - Аристотелю, примерно до XVIII века именовалась натуральной философией. Ему же мы обязаны появлением логики - науки о мышлении. Кроме того, философы, изучавшие процесс познания и его ограничения, создали важнейший инструмент исследования природы - научный метод.
Даже многие научные открытия последних веков были вдохновлены философией. Иоганн Кеплер, Николай Коперник и Исаак Ньютон вдохновлялись теорией о гармонии мира Пифагора, о чем сами и писали в своих научных трудах. Альберт Эйнштейн был ярым приверженцем философии средневекового философа Бенедикта Спинозы, но также считал себя в некотором смысле платоником и пифагорейцем. Один из основоположников квантовой механики Эрвин Шрёдингер написал целую книгу о том, как его открытия в квантовой механике согласуются с индийской философией веданты.
До сих пор в западных университетах всем специалистам в точных и естественных науках, успешно защитившим свою диссертацию, присваивают почетное звание доктора философии - Philosophiæ Doctor, часто сокращаемое в речи и на письме до простого PhD. Тем самым университеты подчеркивают, что философия лежит в самом основании всего человеческого знания. Но чем именно занимается философия, в чем состоит её роль?
Подключение и настройка графиков TradingView
Если Вы — фрилансер или CTO финансового проекта, рано или позно Вы столкнетесь с вопросом подключения графиков, я сэкономлю Вам минимум сутки работы. Те, кто уже используют эту библиотеку, возможно, найдут что-то новое.
Статья будет в формате "книги рецептов" с open source решениями для криптовалютной биржи Binance и Forex.
Программный сбор данных о котировках
Эффективные действия на бирже связаны с тщательным анализом происходящего на рынке. Что кроется за динамикой цифр, котировок?
WPF: Binding без тривиальных конвертеров
Всякий раз, когда я начинал писать новый проект на WPF, меня мучала мысль: почему для того, чтобы привязаться к отрицанию булевой переменной или перевести булеву переменную в тип Visibility, необходимо писать свой конвертер, который потом еще указывать в каждом Binding? А уж если нам необходимо вывести сумму двух чисел, или просто поделить число на 2, требуется написать столько кода, что уже складывать и делить ничего не хочется.
Для решения этой проблемы раз и навсегда я написал аналог стандартного биндинга, позволяющий привязываться к любому выражению от одного или нескольких источников привязки. О том, как это работает и как этим пользоваться, я хочу рассказать подробнее.
Пишем торговых роботов с помощью графического фреймворка StockSharp. Часть 2
Мы продолжаем говорить о создании торговых роботов с помощью платформы StockSharp. В первом материале речь шла о создании проекта и отрисовке основных элементов торговой системы. В заключительном материале цикла займемся непосредственной реализацией торговой стратегии.
Методы приближенного поиска ближайших соседей
Довольно часто программисты и специалисты из области data science сталкиваются с задачей поиска похожих профилей пользователей или подбора схожей музыки. Решения могут сводиться к преобразованию объектов в векторную форму и поиску ближайших.
Мы тоже столкнулись с необходимостью поиска ближайших соседей в задаче распознавания лиц. Там мы формируем векторные представления лиц при помощи нейросети и ищем ближайшие векторы уже известных людей. Изначально для поиска мы выбрали Annoy, как хорошо известный и проверенный алгоритм, используемый в том числе в Spotify. Но быстро поняли, что с его аппетитами по памяти мы либо не вмещаемся в RAM, либо сильно теряем в точности. Это привело к небольшому исследованию. О результатах которого пойдет речь ниже.
MVVM: полное понимание (+WPF) Часть 1
Зачем вообще нужно использовать паттерн MVVM? Это ведь лишний код! Написать тоже самое можно гораздо понятнее и прямолинейнее.
Отвечаю: в маленьких проектах прямолинейный подход срабатывает. Но стоит ему стать чуть больше — и логика программы размазывается в интерфейсе так, что потом весь проект превращается в монолитный клубок, который проще переписать заново, чем пытаться распутать. Для наглядности можно посмотреть на две картинки:
Пишем для UEFI BIOS в Visual Studio. Часть 1 — разворачивание среды разработки, компиляция и запуск на отладку
Введение
В этой статье будет описано, как быстро начать программировать для UEFI во фреймворке edk2 в среде Visual Studio, не тратя массу времени на настройку среды обычным способом, по оригинальным мануалам. Достаточно дать команду git clone ... в корневом каталоге диска, и это на самом деле все, среда будет полностью установлена и готова к работе. Требуются 64-разрядная Windows 7 и выше c Visual Studio 2008-2015. Эти два условия не обязательны, но тогда придется немного потрудиться над собиранием системы edk2-Visual Studio в единое целое, краткая памятка будет приведена.
Цель статьи — провести начинающего за руку по первому UEFI проекту, оставаясь в привычной ему среде. Для более опытных людей, надеюсь, будет интересным поработать в VS вместо привычной командной строки, или разобрать подход и перенести его в любимый Eclipse.
Начнем с простых вещей, вывода строки на консоль и русификации (довольно востребованная вещь, причем простая в реализации), потом будет работа с формами в HII (то, что называлось в обиходе страницами BIOS Setup), потом графика, потом Boot Manager, а потом видно будет (с).
Желающие — прошу пожаловать под кат.
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность