На мой взгляд DeepMind AlphaFold2 и Github Copilot являются одними из самых значимых достижений науки и техники в 2021 году. Спустя два года после их первоначального прорыва команда из DeepMind фактически смогла решить (с небольшими оговорками) задачу фолдинга белка, остававшуюся нерешенной более 50 лет. В этом посте я подробно разбираю устройство данной системы.
Пользователь
Шерудим под капотом Stable Diffusion
Вероятно вы уже слышали про успехи нейросетей в генерации картинок по текстовому описанию.
Я решил разобраться, и заодно сделать небольшой туториал, по архитектуре модели Stable Diffusion. Сегодня мы не будем глубоко погружаться в математику и процесс тренировки. Вместо этого сфокусируемся на применении и устройстве основных компонент: UNet, VAE, CLIP.
Эксперименты со Schedulers в Stable Diffusion
В этой статье разберём, что есть scheduler в диффузионных моделях и как можно подменять их, пользуясь возможностями библиотеки diffusers.
Илон Маск кисти Ван Гога, или специализированные модели Stable Diffusion
Благодаря сообществу, stable diffusion развивается стремительнее, чем можно было предположить. Как я писал в предыдущей статье, вскоре мы должны получить много специализированных моделей под конкретные задачи.
Уже сейчас помимо основной модели весов у stable diffusion есть модели для получения артов в строго определенном стиле.
В этой статье я покажу как это работает на практике и дам небольшую инструкцию для начинающих по добавлению специализированных моделей.
Создаем аватарки с помощью нейросети Stable Diffusion и DreamBooth
"Портрет, сделанный нейросетью" - все чаще читаем в новостной ленте, и каждый хотел бы сделать себе подобный, но удобные сервисы, просящие монету, или желание разбираться самому, отталкивают. Не нужно ничего скачивать. Час времени и каждый сможет сделать себе аватарку!
Учим железки разговаривать, или ESP32 DAC и немного таймера
В этом туториале (если его можно так назвать) я покажу, как можно быстро и довольно просто организовать проигрывание аудиофайла силами микроконтроллера ESP32.
Гидропоника. Выращиваем сверхострый чили и заставляем всех его есть
Полтора килограмма термоядерного Тринидадского Скорпиона я в итоге собрал с одного куста на гидропонике.
У меня было много довольно странных хобби. Некоторые приводили к странным эффектам, вроде массового домашнего производства домашнего порошка для посудомойки. В список к этому странному ряду я решил добавить еще один пункт. Теперь я развлекаюсь еще и с гидропоникой. Причем эффект получился еще более адовый, чем я ожидал.
Тема чудовищно огромная, охватить ее за один пост вряд ли получится, поэтому я постараюсь ограничиться описанием принципа, почему это вообще работает и дать максимально исчерпывающий мануал, чтобы каждый смог из желудей и спичек повторить мой эксперимент. В самом начале будет много теории. Можете ее проскочить и сразу перейти к нужным покупкам, а вернуться к ней позже.
Сегодня в меню
- Что такое гидропоника и почему она гораздо проще, чем почва с червячками
- Никаких дорогих бутылочек. Мешаем компоненты по три рубля за ведро
- Питание растения как алгоритм
- Как быстро собрать прототип гидропонной установки
- Что такое capsicum chinense и как выжить при дегустации
Alpine.js на конкретном примере
Возможно, вы уже слышали про Alpine.js. Если нет, то это "Vue.js на минималках". "Angular 1 для миллениалов". Называйте, как хотите, главное, чтобы вам было понятно.
Зачем нам еще один фреймворк? Ну, Alpine хорошо вписывается в свою нишу. По факту, он – альтернатива большим фреймворкам для сайтов, где эти большие фреймворки не нужны. Например, меня, модного web-developer'а, запрягли писать многостраничный сайт. Мне нужно элементарно сделать форму и всякий другой интерактив. Что я буду делать? Возьму jQuery – друзья не поймут, на чистом JS всё писать тоже не комильфо. К тому же я уже знаю реакты, ангуляры и вью, знаю, что такое data-driven подход. Как мне теперь данные до отправки в HTML хранить?
Тут и приходит на помощь Alpine.js. Можно, конечно, Vue или React прикрутить. Но React без JSX никто в здравном уме писать не будет, а Vue минифицированный через CDN весит 34 kB (против 8.1 kB у Alpine). Так и получается, что выбор падает на Alpine.
Alpine.js — легковесный фреймворк с удобным синтаксисом
Многие разработчики полюбили лаконичный синтаксис и мощь директив Vue.js настолько, что даже пытаются использовать этот фреймворк не только в одностраничных приложениях. Сложно отказаться от использования реактивности, только потому, что вдруг понадобилось написать небольшой проект. Не возвращаться же к старому доброму jQuery или к чистому JS?!
Надо сказать, что во Vue.js (да и во многих других фреймворках) предусмотрен такой вариант его использования. Но все же он кажется слишком громоздким для такой простой работы, а функционал избыточным. И тут на помощь приходит Alpine.js.
Отметим некоторые особенности данного фреймворка:
- Он весит очень мало! 7.2kB в сжатом виде.
- Знакомый и простой синтаксис основанный на директивах.
- Не использует виртуальный DOM
- Подключения возможно как через CDN (по задумке авторов должно быть основным использованием), так и через npm.
Интерактивные эксперименты с машинным обучением (на TensorFlow)
Вкратце
Я создал новый проект Интерактивные эксперименты с машинным обучением на GitHub. Каждый эксперимент состоит из Jupyter/Colab ноутбука, показывающего как модель тренировалась, и Демо странички, показывающей модель в действии прямо в вашем браузере.
Несмотря на то, что машинные модели в репозитории могут быть немного "туповатенькими" (помните, это всего-лишь эксперименты, а не вылизанный код, готовый к "заливке на продакшн" и дальнейшему управлению новыми Tesla), они будут стараться как могут чтобы:
- Распознать цифры и прочие эскизы, которые вы нарисуете в браузере
- Определить и распознать объекты на видео из вашей камеры
- Классифицировать изображения, загруженные вами
- Написать с вами поэму в стиле Шекспира
- И даже поиграть с вами в камень-ножницы-бумагу
- и пр.
Я тренировал модели на Python с использованием TensorFlow 2 с поддержкой Keras. Для демо-приложения я использовал React и JavaScript версию Tensorflow.
Я — Android-разработчик, и мне не нравилось вести ворклоги вручную
«По этим данным мы пробуем понять, надо ли корректировать эстимейты и нет ли проблем в коммуникации в команде», — говорили они. А вот кто такой «бабайка», так и не рассказали..
Поскольку мы все удалёнщики, идея звучала разумно. Да и мне стало интересно, куда девались эти восемь часов: вот прошли, но за чем именно? Однако логировать было непривычно. И вообще лень. Тогда я решила поискать что-нибудь, что будет вести ворклоги за меня. А в процессе исследования немного увлеклась и написала свой плагин для IntelliJ IDEA.
Ниже вы найдете субъективный обзор готовых инструментов и мой велосипед (с исходниками).
Полезная help-ссылка для работы с данными
Дальнейшее описание поста — это содержание help-ссылки. Поэтому, можете сразу ознакомиться с документом. Либо начать с её содержания, которую прикрепляю ниже.
Конечно, весь список книг/сервисов/видео и лекций в файле неполный. Поэтому предлагаю сделать этот пост ценнейшим — добавляйте в комментарии свои полезные ссылки, самые крутые из них я добавлю к себе в файл.
15 книг по машинному обучению для начинающих
Добавляйте в закладки и делитесь с коллегами!
Книги по машинному обучению на русском
1. «Математические основы машинного обучения и прогнозирования» Владимир Вьюгин.
О чем
Сначала изучите азы статистической теории машинного обучения, игр с предсказаниями и прогнозирования с применением экспертной стратегии. Их основы прекрасно объясняет автор книги, доктор физико-математических наук Владимир Вьюгин. Пособие рассчитано на студентов и аспирантов и в доступной форме излагает математические основы, необходимые для дальнейшей работы с машинным обучением.
2. «Верховный алгоритм» Педро Домингос.
О чем
Книга, благодаря которой даже ничего не смыслящие в математике и статистике люди поймут, что такое алгоритмы машинного обучения и каково их применение в жизни. Профессор Педро Домингос рассказывает о пяти основных школах Machine Learning и о том, как они используют идеи из различных областей научного знания — нейробиологии, физики, статистики, биологии, — чтобы помогать людям решать сложные задачи и упрощать рутину с помощью алгоритмов.
Вероятностное программирование и байесовский метод для хакеров
Книга позиционируется как прикладная, максимально избавленная от математики и неустаревающая.
Под катом — немного сокращенный перевод обзора этой книги, выложенного автором на Github.
Поучаствуйте пожалуйста в голосовании
Тематическое моделирование репозиториев на GitHub
Тематическое моделирование — подраздел машинного обучения, посвященный извлечению абстрактных «тем» из набора «документов». Каждый «документ» представлен мешком слов, т.е. множеством слов вместе с их частотами. Введение в тематическое моделирование прекрасно описано проф. К. В. Воронцовым в лекциях ШАД [PDF]. Самая известная модель ТМ — это, конечно, Латентное размещение Дирихле (LDA). Константину Вячеславовичу удалось обобщить все возможные тематические модели на основе мешка слов в виде аддитивной регуляризации (ARTM). В частности, LDA тоже входит в множество моделей ARTM. Идеи ARTM воплощены в проекте BigARTM.
Обычно тематическое моделирование применяют к текстовым документам. Мы в source{d} (стартап в Испании) перевариваем биг дату, полученную из GitHub репозиториев (и скоро примемся за каждый публично доступный репозиторий в мире). Естественным образом возникла идея интерпретировать каждый репозиторий как мешок слов и натравить BigARTM. В этой статье пойдет речь о том как мы выполнили по сути первое в мире тематическое исследование крупнейшего хранилища open source проектов, что из этого получилось и как это повторить. docker inside!
Автополив цветов с удаленным управлением
Концепт
При проектировании системы я отталкивался от следующих принципов:
- Дешево и сердито — я не хочу тратить много средств на систему, которая поливает 15 недорогих цветков. У меня не оранжерея.
- Автономность — она должна работать сама по расписанию, но это не исключает наличие ручного управления.
- Удобство — настройка полива происходит при помощи смартфона. Панельки это удобно, но не в этом случае.
- Гибкость — цветы в основном все разные с разными кашпо, поэтому поливать их необходимо с разной периодичностью и разным количеством воды.
- Удаленность — управлять можно с любой точки планеты, где есть интернет и смартфон.
Философ искусственного интеллекта Элиезер Юдковский о сингулярности, байесовском мозге и гоблинах в шкафу
Элиезер Шломо Юдковский — американский специалист по искусственному интеллекту, исследующий проблемы технологической сингулярности и выступающий за создание Дружественного ИИ. В неакадемических кругах больше известен как автор фанфика «Гарри Поттер и методы рационального мышления» под эгидой Less Wrong.
Меня всегда удивляли умные люди, верящие в вещи, кажущиеся мне абсурдными. К примеру, генетик и директор Национальных институтов здоровья Фрэнсис Коллинс верит, что Иисус восстал из мёртвых. Теоретик ИИ Элиезер Юдковский верит, что машины… Но лучше я дам слово ему самому. В 2008 я брал у него интервью на Bloggingheads.tv, но ничего хорошего из этого не получилось, поскольку я решил, что он был последователем гуру сингулярности Рэя Курцвейла. Но Юдковский ни за кем не следовал и никогда не учился в колледже. Он упрямый и оригинальный теоретик интеллекта, как человеческого, так и искусственного. Его работы (к примеру, эссе, помогшее мне понять, или давшее иллюзию понимания, теоремы Байеса) источает высокомерие самоучки, острые грани которого не были зашлифованы формальным образованием – но в этом есть часть его очарования. Даже когда он раздражает вас, Юдковский забавен, свеж, провокационен. Для подробностей его биографии смотрите его личный сайт или сайт Института исследования машинного интеллекта, в основании которого он участвовал. И почитайте это интервью с бонусом в виде комментариев от его жены Брийены.
Асинхронность 3: Субъекторная модель
Предисловие
Эта статья является продолжением цикла статей про асинхронность:
Спустя 3 года я решил расширить и обобщить имеющийся спектр асинхронного взаимодействия с использованием сопрограмм. Помимо этих статей также рекомендуется ознакомиться с универсальным адаптером:
Введение
Рассмотрим электрон. Что он из себя представляет? Отрицательно заряженная элементарная частица, лептон, обладающий некоторой массой. Это означает, что он может участвовать по меньшей мере в электромагнитных и гравитационных взаимодействиях.
Создание многопользовательской веб-игры в жанре .io
Вышедшая в 2015 году Agar.io стала прародителем нового жанра игр .io, популярность которого с тех пор сильно возросла. Рост популярности игр .io я испытал на себе: за последние три года я создал и продал две игры этого жанра..
На случай, если вы никогда раньше не слышали о таких играх: это бесплатные многопользовательские веб-игры, в которых легко участвовать (не требуется учётная запись). Обычно они сталкивают на одной арене множество противоборствующих игроков. Другие знаменитые игры жанра .io: Slither.io и Diep.io.
В этом посте мы будем разбираться, как с нуля создать игру .io. Для этого достаточно будет только знания Javascript: вам нужно понимать такие вещи, как синтаксис ES6, ключевое слово
this
и Promises. Даже если вы знаете Javascript не в совершенстве, то всё равно сможете разобраться в большей части поста.Практические задачи по Java — для курсов и прочих занятий
Практические задачи по Java — для курсов и прочих занятий
Несколько вводных слов
Последние несколько лет я читаю курс по программированию на Java. Со временем он менялся — то добавлялись, то выкидывались разные части, менялась последовательность тем, менялся подход к построению плана самих занятий, и так далее. То есть, курс совершенствовался. Одной из основных проблем, возникших при подготовке курса — это задачи. О них и пойдёт речь.
Дело в том, что каждое моё занятие состоит из двух частей. На первой я выступаю в роли лектора — рассказываю с примерами кода о какой-то новой теме (классы, наследование, дженерики и так далее). Вторая часть — практическая. Очевидно, что нет смысла просто рассуждать о программировании, надо программировать. Приоритет на занятиях — решение задач, то есть программирование чего-то как-то. Программирование на занятиях отличается от программирования дома, так как на занятиях можно задать вопрос, показать код, получить быструю оценку кода, комментарии по улучшению, исправлению написанного. Очень легко было найти задачи для самых первых занятий. Задачи на циклы, условные операторы, и ООП (к примеру, написать класс «Собака» или класс «Вектор»). Сервисы вроде leetcode позволяют даже проверить правильность решения таких задач сразу, онлайн. Но какие задачи дать студентам на занятии, которое было посвящено коллекциям? Потокам? А аннотациям? За несколько лет я придумал, или переработал несколько таких задач, и эта статья, по сути, является сборником этих задач (к некоторым задачам прилагается решение).
Information
- Rating
- Does not participate
- Registered
- Activity