Техножрица 👩‍💻👩‍🏫👩‍🔧
9.99K subscribers
1.03K photos
48 videos
24 files
568 links
Люблю высокие технологии и кушать.

Добро пожаловать, если в сферу твоих интересов тоже входят математика, DL, NLP, программирование на Python, или тебе просто любопытно, о чем на досуге размышляют люди, занимающиеся разработкой и исследованиями в ML.
Download Telegram
Forwarded from Data Science изнутри (cene655)
#о_себе

Меня зовут Арсений. Везде в интернете у меня ник cene655. Мне 17 лет, я из Челябинска, учусь в 11 классе в Челябинске. Работаю в Сбере. Начинал с nlp 2 года назад. Потом получилось выиграть в олимпиаде по ии для школьников ии нто. Затем начал интересоваться генеративными моделями и сейчас ими в основном и занимаюсь.
Недавно решила разобрать документацию по механике torch.autograd ( https://pytorch.org/docs/stable/notes/autograd.html ) и обратила внимание на абзац:

An important thing to note is that the graph is recreated from scratch at every iteration, and this is exactly what allows for using arbitrary Python control flow statements, that can change the overall shape and size of the graph at every iteration. You don’t have to encode all possible paths before you launch the training - what you run is what you differentiate.

Я вспомнила, как когда-то давно пыталась создать вычислительный граф с циклом то ли в Tf 1.0, то ли в древней версии Theano, и у меня не получалось потому что он тупо не мог скомпилироваться. Но, действительно, поскольку в PyTorch такой проблемы возникнуть не может, то почему бы и не закрыть гештальт? Сказано - сделано.
P.S. Справка про вычислительные графы: https://www.tutorialspoint.com/python_deep_learning/python_deep_learning_computational_graphs.htm

#библиотеки
#задача на выживание в ОС 90х.

У вас есть самая первая русифицированная MS-DOS над файловой системой FAT - без графического интерфейса, только командная строка, без подсветки, без автодополнения при вводе команд, без возможностей создавать какие-либо пароли. В системе нет разделения на пользователей, нет никаких ограничений прав. Вопрос: как в ней создать файл так, чтобы другой человек не мог его открыть? Или что поменять в уже существующем файле? Никакие команды, кроме системных, использовать нельзя.
Подсказка: условий задачи достаточно, чтобы ответить на вопрос.

За решение 1 задачи даётся звание лексмеханик, 2 - трансмеханик.
Решила иногда выкладывать обзоры на учебные материалы, которыми я когда-то пользовалась и нашла сколько-нибудь полезными. Вдруг кому-то пригодится?

Сегодня скажу пару слов про курс лекций Advanced Natural Language Processing:
https://www.youtube.com/playlist?list=PLWnsVgP6CzadmQX6qevbar3_vDBioWHJL
- Язык: английский.
- Преподаватель: Mohit Iyyer из University of Massachusetts, Amherst. Послужной список ученого в Google Scholar ( https://scholar.google.com/citations?user=rBVA5tcAAAAJ&hl=en ) вызывает уважение.
- Практическая полезность: высокая (знания легко применяются на практике).
- Актуальность: высокая (акцент на современные модели и актуальные темы).
- Можно рекомендовать: всем, кто имеет базу знаний в основах математики для ML, классическом ML, простых нейронных архитектурах, умеет пользоваться фреймворками типа PyTorch/Tf и теперь хочет углубиться в NLP. Я проходила курс пару лет назад, уже поучившись и поработав в NLP некоторое время, с целью углубиться в трансформеры и другие новые темы, поэтому начала сразу с 7й лекции.

Курс начинается с введения/напоминания базовых понятий из лингвистики и ML/NLP. Рассказывается про transfer learning, метрики Cross-entropy, Perplexity. Из простейших моделей бегло упоминаются цепи Маркова, n-граммы, простые рекуррентные сети (RNN), но внимание автор на этих моделях не останавливает. Чуть больше времени уделено простой модели со скользящим окном (судя по слайдам, она эквивалентна одномерной свертке + полносвязный слой): она используется в лекции, в которой напоминаются основы PyTorch, после которой нам также напоминают основы backpropagation. Не рассмотрены CRF и LSTM - видимо, из-за того, что они сейчас совсем редко используются.
Далее начинается разбор механизма внимания, принципиального устройства трансформеров (энкодер, декодер и смешанные архитектуры), а также конкретных имплементаций (BERT, RoBERTa, XLNet, ELECTRA, ALBERT). Эта часть курса устроена подробно и хорошо помогает войти в тему. (Правда, я уже до этого разобрала self-attention с помощью статей с towardsdatascience, моя любимая - https://towardsdatascience.com/illustrated-self-attention-2d627e33b20a ). Раскрыта тема предобучения трансформеров; менее подробно раскрыта тема токенизации.
Понравился разбор нескольких актуальных задач NLP и подходов к ним: перефразирование, ответы на вопросы, мультимодальные задачи (на примере image captioning), синтаксический и семантический парсинг (может использоваться как промежуточная задача). Отдельно автор решил рассмотреть проблемы машстабирования трансформеров и дистилляции больших моделей в маленькие. Порадовало раскрытие темы анализа common sense knowledge моделей и техники пробинга, мне было очень интересно.
Затронуты сопутствующие современному NLP проблемы извлечения данных с помощью crowd sourcing и ethical concerns. В общем, стильно, модно, молодежно, рекомендую.

#учебные_материалы
Сегодня пришло письмо о том, что нашу с коллегами статью Acceptability Judgements via Examining the Topology of Attention Maps принимают на Findings of EMNLP 2022 😳☺️🥳
Достойное продолжение традиции, начатой в прошлом году статей Artificial Text Detection via Examining the Topology of Attention Maps ( https://aclanthology.org/2021.emnlp-main.50/ )
Очень надеюсь, что получится опять вживую посетить эту конференцию! В прошлый раз мне очень понравилось.
На днях проитерировалась по звуковым файлам в папке с помощью списка названий, которые выдает функция os.listdir(...). Посчитала по каждому нужные признаки, свела в один массив, а вот сохранить информацию о том, в каком порядке сами файлы шли, забыла, так что не знала, какие признаки к какому примеру относятся.
Расчет шел несколько дней, так что пересчитывать не хотелось. Решила проконсультироваться с документацией, чтобы понять, в каком порядке os.listdir выдает названия файлов. Ответ убил!

The list is in arbitrary order
( https://docs.python.org/3/library/os.html#os.listdir )

Решила все же не сдаваться и понять, в какой степени order действительно arbitrary. В первую очередь я проверила, что он - о чудо! - остается одним и тем же при перезапуске одного и того же юпитер ноутбука с ядром Python 3.8.3 (в котором у меня были, как всегда, установлены сиды random.seed и np.random.seed). Этого уже было достаточно, чтобы спасти расчет, но я все же решила ещё немного повыяснять, что к чему.

Во-первых, выяснилось, что на самом деле ни от сидов, ни от момента, в которой вызывается os.listdir, ничего не зависело.
Во-вторых, я копировала файлы в другие папки в разном порядке, архивировала/разархивировала их, и результат os.listdir все равно оставался тем же самым! Так что от порядка, в каком файлы копировались в папку, тоже ничего не зависело, если сам набор файлов оставался тем же и с теми же названиями.
В-третьих, единственным способом изменить порядок, в котором os.listdir обходит папку, который я нашла, оказалось скопировать эту папку на устройство с другой файловой системой, а именно, с ext4 на NTFS. В свою очередь, этот новый порядок тоже оставался одним и тем же, независимо от копирования файлов туда-сюда-обратно в пределах той же ФС.

В итоге появилось большое подозрение, что на самом деле для Python 3.8.3 order жестко задан файловой системой и никаким arbitrary там больше не пахнет - хотя, видимо, на более ранних версиях Python было не так, и порядок файлов мог меняться от вызова к вызову: https://stackoverflow.com/questions/57555031/what-method-does-os-listdir-use-to-obtain-a-list-of-files-in-a-directory (UPD: в комментариях подсказали, что у человека по ссылке могла быть необычная файловая система, и дело было в ней, а не в версии; я сделала эксперимент, и у меня и правда не получилось воспроизвести не-детерминированное поведение os.listdir с Python 3.5 и 2.7 с ext-4).
Впрочем, я не разбирала исходный код функции и то, как он взаимодействует с ФС, так что остался какой-то шанс, что я ошибаюсь. Вы можете проверить утверждение экспериментально для своей конфигурации системы (маленькую папку-пример и свои результаты на ней выложу в коммент под этим постом) и повызывав os.listdir для нее. Будет интересно, если у кого-то получится другой результат.

#библиотеки
В общем, радость насчёт принятия статьи была преждевременной, так как Findings не индексируются в Scopus, а значит, я все ещё не подхожу по формальным критериям для защиты по трем статьям на факультете компьютерных наук в ВШЭ, что было моим последним оплотом надежды в последнее время.
Так что тупо продолжаю сидеть с шестью статьями ( https://scholar.google.com/citations?user=rsTb_hYAAAAJ&hl=en&oi=sra ), которые никак не складываются во что-то, подходящее для защиты ( https://youtu.be/pTZaNHZGsQo ): на общую тему из них только четыре, из них главный автор я только в трёх, из которых только одна в ВАК и одна в Scopus.
Какая-то странная ситуация в итоге сложилась, а научного руководителя у меня нет, никто за меня ничего не разрулит.
Составила список из пяти старших коллег, с тремя из которых делала вместе статьи, попробую наиболее подробно описать свою ситуацию и спросить каждого, не может ли он(а) как-то помочь, подсказать, что мне делать, какие у меня варианты, что можно сделать, чтобы защититься в их учебном заведении и т.д. Но сил очень мало осталось, руки опускаются...
У меня, как и, наверное, многих, вызывает фейспалм реклама платных курсов, которые обещают за несколько месяцев превратить любого человека, вне зависимости от бэкграунда, в IT-сверхразума с з/п 300k/сек, за "скромную" плату. Однако, как мне кажется, корень проблемы тут не в жадности авторов курсов, пытающихся создать впечатление, что программирование - это просто, а в образе мышления учеников, которые слишком сильно хотят в это верить, хотят заработать здесь и сейчас, делая что-то "крутое", но не имея при этом интереса к систематическому получению знаний (а в самых худших случаях и к самой предметной области). В связи с этим мне вспоминается один случай.
Познакомилась я как-то с красивым парнем на сайте знакомств, встретились, начали общаться. Рассказал, что он бросил универ и работает джуниор-разработчиком в компании, разрабатывающей игры. Я спросила его, на каком языке он пишет. Он сказал "Unreal".
Я задумалась. Говорю: "так это же не язык программирования, а движок, нет?" В ответ он стал спорить и расписывать, как много всего можно сделать "в Unreal". Я сначала опять не сообразила, о чем речь, а потом по мере его рассказа поняла, что он описывает некий фреймворк, заточенную под него среду разработки со встроенными редакторами объектов и т.п., и все это называет одним и тем же словом, как будто это одна сущность. Я и говорю, мол, так и так, я поняла, в какой среде и с каким фреймворком ты работаешь... но вопрос был в другом, язык программирования-то какой? Он опять: Unreal.
Ну, я взяла уже смартфон, стала сама искать. Нашла и говорю, мол, язык разработки у тебя C++. Он, правда, все равно не поверил, и пришлось ещё долго объяснять разницу между фреймворком, средой разработки, визуальными редакторами и языком программирования, тыкая пальцем в Википедию.
Everyday we stray further from god...

P.S. Самое интересное, что парень-то сам по себе не глупый - понимал школьную физику, интересовался какими-то научно-популярными штуками, которые мы с ним вместе обсуждали. Но в погоне за тем, чтобы войти в ойти, забыл разобраться, на чем будет прогать.
Впрочем, через какое-то время руководитель сообразил, что джун недопеченый и отправил его на изучение какого-то учебника по плюсам, а потом на ещё одно собеседование, которое он даже прошел. Чем сейчас парень занимается, не знаю.
Media is too big
VIEW IN TELEGRAM
Наткнулась на любопытный отрывок из сериала Подозреваемый (Person of Interest) в посте из группы https://t.me/physics_lib (пост легко находится по названию сериала). В посте говорится, что учитель озвучивает гипотезу о нормальности ( https://ru.m.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D1%87%D0%B8%D1%81%D0%BB%D0%BE ) числа пи, но это не так. На самом деле озвучивается более слабая гипотеза о том, что любая последовательность цифр встречается в числе пи хотя бы раз. Эта гипотеза может запросто оказаться правдой, но все же ещё не доказана.
Интересную дискуссию на эту тему можно прочитать здесь: https://math.stackexchange.com/questions/216343/does-pi-contain-all-possible-number-combinations

Красивая всё-таки штука - теория чисел.

#математика
Последний рабочий день недели окончен. Коротаю вечер за просмотром аниме, поклёвывая макарошки из пластикового судочка... и тут экшн-сцену внезапно прерывает рекламное объявление (см. снимок экрана). Киберпанковость объявления превысила киберпанковость мультипликационного фильма более, чем в 9000 раз, поэтому я незамедлительно перешла на сайт: https://neural-university.ru/lp .
Ох и красота! "AI сажает ракеты" (и людей тоже), "AI считывает мыслительные команды" (я как раз грустила о том, как медленно нейросети пишу; хорошо, что контекстная реклама считала мои мысли), "AI выращивает урожай" (Привет, Борис!)... Руки сами потянулись к регистрации!
После регистрации на сайте тут же показали ссылку на бота @NeuralUniversity_bot , в котором в будущем появится ссылка на вебинар. А бот от своих щедрот ещё подарок преподносит: ссылку на бонусный видос! Я легким движением руки сняла предохранитель с воображаемого огнемета - на случай, если придется столкнуться с техноересью - и приступила к просмотру.
https://www.youtube.com/watch?v=Prln-cOIf6E

Видоролик произвел на меня противоречивое впечатление.
В начале видео лектор рассказывает нам разницу между задачами, которые решаются с помощью ML (в видео "искусственный интеллект" используется как синоним ML) и задачами, которые решаются без его помощи. Действительно, важно понимать, в каких задачах ML применять рационально ("интеллектуальная задача" в терминах лектора), а в каких - нет, но выбор примеров для иллюстрации этой мысли сомнителен. Особенно меня зацепил пример на 2:03 про "термодинамический расчет". Существует четкая математическая постановка задач, связанных с переносом тепла, конвекцией, гидродинамикой, газовой динамикой и т.п., поэтому называть эти задачи "интеллектуальными" - так автор называет плохо формализуемые задачи - неверно. Физики и инженеры формализовали и решали задачи физического моделирования численными методами - сначала на бумаге, а потом и на компьютере, с помощью CAE-пакетов, задолго до того, как нейросети начали входить в эту область.
Примерно с 4:25 по 7:55 лектор своими словами обрисовывает идею об иерархичности внутренних представлений на скрытых слоях нейросети. Есть множество работ на эту тему, самые известные - про сверточные сети ( http://web.eecs.umich.edu/~honglak/cacm2011-researchHighlights-convDBN.pdf ) и про BERT ( https://aclanthology.org/P19-1452.pdf ). Есть и интересные свидетельства об отдельных нейронах в таких сетях, неожиданно научившихся различать легко интерпретируемые признаки даже на неразмеченных данных. Например, как-то заметили, что один нейрон в нейросети, через которую прогнали неразмеченные видео с YouTube, научился распознавать котов ( https://blog.google/technology/ai/using-large-scale-brain-simulations-for/ )... да вот только есть одно большое "но": нейроны, распознающие подобные высокоуровневые признаки, располагались на глубоких слоях.
Лектор говорит о том, что нейроны на первом слое нейросети, на которую подается пиксельное представление картинки, могут обнаружить такие признаки, как глаз, клык, кончик уха собаки, называя эти признаки "простыми", но это неверно. Это достаточно высокоуровневые признаки, для их обнаружения нужна большая обобщающая способность, которая не может быть достигнута на первом слое. В уже упомянутой статье http://web.eecs.umich.edu/~honglak/cacm2011-researchHighlights-convDBN.pdf это проиллюстрировано для сверточной сети на Figure 3. Тут можно видеть, что свертки первого слоя научились выделять лишь перепады яркости и линейные "кромки".
В общем, жалко, что лектор не использовал визуализации из настоящих статей - они намного более осмысленные и познавательные, чем те, которые он придумал, чтобы упростить изложение, в результате чего исказил реальную картину.
Промежуток с 9:09 до 11:11 мне, как ни странно, понравился. Здесь лектор рассказывает про обучение нейросети на обучающей выборке довольно нетипичным языком, который поначалу слегка резал мне слух, но потом я прослушала еще раз и подумала, что, в принципе, почему бы и нет - такое объяснение хорошо подходит как первое приближение для слушателя, который раньше не знал о нейросетях.
На 11:13 лектор рассказал, что начал заниматься нейросетями в 2003 году, и тогда для этого приходилось использовать C++ и MatLab, а TensorFlow и Keras не было. Действительно, так и есть. У меня вызвало уважение, что человек начал заниматься этой темой так давно, до появления CUDA и бума фреймворков и прописывал всё сам на низком уровне (впрочем, дальнейший анализ информации об авторе оставил меня в недоумении насчет того, правда ли это на самом деле). Но то, что с помощью TensorFlow и Keras нейросети может делать человек, который не умеет программировать - это неверное утверждение.
Закончилось видео объяснением того, что такое тестовая выборка (объяснение в принципе нормальное, хорошо, что это упомянули) и рекламой сайта.
Досмотрев его, я решила побольше узнать про лектора и разыскала его страницу на LinkedIn.
https://www.linkedin.com/in/%D0%B4%D0%BC%D0%B8%D1%82%D1%80%D0%B8%D0%B9-%D1%80%D0%BE%D0%BC%D0%B0%D0%BD%D0%BE%D0%B2-2077b7192/

Страница ввела меня в недоумение.
Если человек разрабатывал искусственный интеллект с 2003 года, то почему это никак не отображено в графе "опыт работы"? Почему там указан опыт работы только в одном месте ("Университет Искусственного Интеллекта"), 4 года и 3 месяца? Может быть, он работал в какой-то закрытой области? Но обычно это не мешает написать хотя бы название/тип учреждения и тип работы.
В разделе "Courses" написано "Более 200 тренингов и курсов", но названий этих курсов не написано. Почему он так тщательно посчитал количество пройденных им курсов, но не упомянул названия ни одного из них? Так много вопросов и так мало ответов...
В поисках ответов я вернулась обратно на сайт https://neural-university.ru/lp . Тут в разделе "ведущий интенсива" указано, что Дмитрий не только разрабатывал искусственный интеллект с 2003, но и руководил IT-проектами с 2011. Это делает пустоту страницы на LinkedIn еще более странной. Обычно у IT-руководителей очень развитые LinkedIn страницы и много контактов. Где же мне узнать про IT-проекты Дмитрия, если не здесь? 🤔 Может быть, вернуться обратно на сайт Университета Искусственного Интеллекта?
На другой странице сайта - https://neural-university.ru/introduction_to_ai - мы находим новую информацию о молодом человеке. Тут выясняется, что у него 8 лет опыта разработки искусственного интеллекта, а не 19, как невнимательный читатель мог бы подумать по результатам просмотра предыдущей страницы. И новые загадочные сведения: первый в России нейро-компьютерный интерфейс, 10 проектов в области искусственного интеллекта, инновационные форумы, всё безо всяких ссылок и конкретики, и - публикации на ведущей конференции по нейронным сетям «Нейроинформатика». А вот это уже интересно...
Я не знала о существовании такой конференции, но быстро нашла её сайт: https://neuroinfo.ru/index.php/ru/
Пишут, что конференция рецензируемая и индексируется в РИНЦ. Это хорошо, но недостаточно для того, чтобы назвать её "ведущей". Навскидку она выглядит как обычная конференция для студентов, аспирантов, молодых сотрудников, организованная российскими университетами, наподобие "Ломоносова" или "Конференции МФТИ". Подобные конференции могут быть полезны молодым людям, которые делают первые шаги в науке, но под "ведущими" конференциями обычно понимают те, что находятся в списке CORE http://portal.core.edu.au/conf-ranks/?search=0801&by=all&source=CORE2018&sort=arank&page=1 с рейтингами B, A, A*.
Впрочем, найти информацию о статьях или выступлениях Дмитрия на ней мне в любом случае не удалось.
Зато удалось найти страницу молодого человека Вконтакте ( https://vk.com/id160620 ), на которой написано, что он родился в 1985 году. В свете этого играет новыми красками предпоследняя строчка из все того же раздела "ведущий интенсива" со страницы https://neural-university.ru/lp . Ведь в ней написано, что на текущий момент (2022 г.) Дмитрий имеет опыт преподавания 23 года, а это значит, что он начал преподавать с 14 лет и делает это без перерыва (если перерывы были, значит, начал еще раньше), виртуозно совмещая преподавательскую деятельность сначала с учебой в университете, потом с 8 годами разработки Искусственного Интеллекта (параллельно с учебой и преподаванием), а потом и 7 годами управления образовательными компаниями.
Неудивительно, что такой продуктивный преподаватель, разработчик и руководитель способен писать по три нейросети в день и научить этому нас с вами! Теперь я жду интенсива с еще большим нетерпением. 🥰
Сегодня я решила не останавливаться на изучении качества образовательных материалов, дающихся Университетом и послужного списка его основателя, а обратить внимание на отзывы учеников (не те, которые написаны на их сайте, а настоящие).
Быстро нашлась группа учащихся, которые пытаются вернуть деньги за курсы: https://vk.com/neuraluniversityreport
Тут же можно узнать про финансовые и юридические аспекты деятельности этой уважаемой организации: огромные долги по налогам, судебные иски от учащихся; когда проблемы накапливаются, организация меняет юридическое лицо с одного на другое.
Много отзывов на отзовике с оценкой "1 балл", например:
https://otzovik.com/review_12279564.html
Есть даже статья на cnews:
https://www.cnews.ru/news/top/2022-06-17_desyatki_obmanutyh_studentov
Теперь несложно понять локацию, в которой обнаруживают возгорания выпускники этого Университета после оплаты курсов за сотни тысяч рублей ( https://neural-university.ru/pay ). Она располагается чуть ниже спины того, кто оплатил курс.
Я нашла AI / IT-проекты Дмитрия... но лучше бы не находила.

Первый из них - https://ai-hunter.ru/ . Это самый депрессивный сайт для поиска работы из всех, что я видела, ведь на сайте ищут работу исключительно выпускники УИИ.
Несчастные ( https://ai-hunter.ru/search/candidates ) ждут, что крутые компании зайдут сюда и обязательно их найдут. Но как, если фильтры поиска не работают?..
У многих кандидатов перечисление "навыков" занимает несколько экранов, а под ними часто идет ссылка на ужасно сверстанное резюме в Word, от которого вытекают глаза. У некоторых же наоборот - лишь описание в пару строк, из которого невозможно понять, что же умеет человек. УИИ утверждает, что каждому выпускнику составить резюме помогает профессиональный HR. Что же за профессионал помогает создавать этот п***ц?
В довершение добавлю, что в "вакансиях" ( https://ai-hunter.ru/search/vacancies ) нет контактов, чтобы связаться с работодателем, поэтому невозможно сказать, знают ли вообще эти компании, что "ищут" кандидатов на этом сайте.
А пока я пишу пост про другое творение Унверситета Искуственного Интеллекта, вот ещё некоторые скриншоты с https://ai-hunter.ru/ .
Сверху - демонстрация работы поиска. Слева - кусочек страницы кандидата, которому её, несомненно, помог сделать профессиональный HR. Справа - кусочек описания вакансии.
Всё это похоже на детскую игру в куклы, только вместо Барби и Кена - кандидат и работодатель:

- Здравствуйте! Я умею запускать нейронные сети на графическом процессоре!
- Отлично! Мы можем предложить вам уникальную возможность ходить в офис! (но контактов офиса не дадим)
Итак, второй проект - "AI-платформа" для разработки и деплоя нейросетей Terra AI:
https://terra-ai.ru/
Заявляется, что она позволяет создавать нейросети в визуальном редакторе, в котором слои (полносвязные, сверточные и т.п.) выглядят как прямоугольные блоки, связи между которыми задаются стрелками. В этом же редакторе нейросеть можно обучить, а потом задеплоить демонстрацию в галерею https://demo.neural-university.ru/ . Казалось бы, неплохая идея для песочницы - аналога Scratch ( https://scratch.mit.edu/ ) для ML-щиков. В чем же подвох?
В разделе "цены": https://terra-ai.ru/price . Полгода пользования платформой стоят 120.000 рублей. Это, а также то, что на главной странице предлагают с её помощью "Демонстрировать AI проект заказчику", наводит на мысли, что она позиционируется не как песочница, а как некий бизнес-инструмент или, как минимум, платформа для демонстрации портфолио кандидатом (уж не тем ли, что ждет работодателя мечты на ai-hunter?).
Впрочем, я решила не рубить с плеча и ещё немного поразбираться: может быть, несмотря на столь непривычную форму, по своему содержанию это и правда серьезный инструмент для бизнеса, который стоит своих денег? Чтобы понять, так ли это, я решила поискать информацию о том, как устроены проекты внутри этой платформы, но вот незадача: единственным источником, который я смогла найти, оказалась запись вебинара... кого бы вы думали? Ну конечно же, Дмитрия Романова. Колесо Сансары дало оборот, и я перешла к просмотру записи:
https://www.youtube.com/watch?v=k5-VLMPhNg4&ab_channel=Ramanuja
Если бы я только знала, какой вывих мозга заработаю при просмотре...

Первую половину вебинара занимает рассказ про то, что такое нейросети, в духе видеоролика, который я уже разобрала выше, только длиннее и скучнее, поэтому я её промотала. А вот начиная с 1:31:50 уже демонстрируется интерфейс разработчика на Terra AI и рассказывается о платформе.
Далее идут вопросы и ответы, которые я большей частью тоже промотала, а вот на 1:59:00 мы узнаем ещё одно применение платформы Terra AI: УИИ устраивает на ней хакатоны. Буквально через минуту выясняется, что участие в хакатоне... стоит 1900 рублей с каждого участника. Я-то раньше думала, что на хакатонах нужно выигрывать деньги, а не платить их. Видимо, отстала от жизни.
После этого зрители вебинара предлагают темы для создания мини-проекта в Terra AI, который Дмитрий обещает сделать прямо у нас на глазах. Победило предложение сделать нейросеть, которая будет различать по картинке времена года (точнее, отличать осень от весны). Но как же сделать это без датасета? Никак, поэтому преподаватель приступил к его созданию.
С этой целью на моменте 2:11:07 он открывает поиск Яндекса по картинкам по запросу "осень". В моей голове зароились предположения, как же именно он соберет датасет - будет ли скрапить изображения из результатов с помощью заготовленного скрипта или воспользуется для этой же цели плагином для браузера? Но всё оказалось намного проще: Дмитрий (и его компаньон за кадром) просто в течении нескольких минут перебрали и сохранили 40 картинок вручную. Я, признаюсь, засомневалась: какая же сеть сможет с нуля обучиться на таком микроскопическом множестве примеров?
Сначала Дмитрий попытался использовать совсем маленький двуслойный перцептрон, но он не дал результата.
Впрочем, он быстро поправил себя и уже на 2:27:38 показал более достойный ответ, увеличив количество параметров (свертки Дмитрий использовать не смог, потому что, по его словам, backend Terra AI сделан на Tensorflow, и из-за только что вышедшего обновления этой библиотеки, сверточные слои внезапно перестали работать). А вот то, что произошло дальше, просто выкинуло мой мозг в форточку: нам показали графики, со слов Дмитрия, "точности классификации", согласно которым через 40 эпох обучения этот перцептрон достиг почти 90% на тестовой подвыборке.
Я очень долго смотрела на эти графики, пытаясь осознать, что же только что произошло.
Первым объяснением этого паранормального явления, которое пришло мне в голову, было, что на самом деле никакая нейросеть не обучалась, а графики сгенерировали с потолка. Но затем я повнимательнее всмотрелась в название метрики: над графиками написано не "Accuracy", как я автоматически подумала, услышав о "точности классификации", а "Balanced Recall".
Recall - это метрика, равная количеству примеров, для которых _правильно_ предсказана метка 1 (True Positive), разделенных на количество примеров, имеющих истинную метку 1 (True Positive + False Negative).
Recall равен 1, если модель присваивает всем примерам метку 1. Отсюда следующая гипотеза:
Возможно, выход нейросети Дмитрия неправильно отнормирован, и в процессе "обучения" (если это можно так назвать) сеть учится выдавать числа, близкие к 1, для обоих классов, а затем для каждого класса в отдельности считается Recall, также равный 1 или чуть меньше. На графиках слева мы видим взвешенное среднее арифметическое от обоих Recallов, поэтому он и зовется Balanced.
Последний вывих мозга от УИИ на сегодня. Здесь: https://youtu.be/k5-VLMPhNg4?t=8954 лектор делает нейронку "мощнее", параллельно подключая три слоя с активациями Relu, Sigmoid и Hard Sigmoid. Зачем же подключать так полносвязные слои, тем более, с выходами разного масштаба (Relu выдает числа от 0 до условной бесконечности, Sigmoid и Hard Sigmoid - от 0 до 1)? Может быть, это просто демонстрация гибкости Terra AI, и лектор понимает, что архитектура не имеет смысла? Но нет. На 2:33:12 он, отвечая на вопрос зрителя, не является ли подобный подбор архитектуры гаданием на кофейной гуще, сравнивает свои изобретения с изобретениями Эдисона и братьев Райт и уверяет, что эта архитектура - результат "сложного интеллектуального перебора", за которым "стоит куча лет опыта". На этом я окончила просмотр. 🥹🥹🥹
-
P.S. На неделе постараюсь собрать из постов про УИИ статью, готовую для выкладывания куда-нибудь, где ее увидит широкая аудитория, в т.ч. потенциальные инвесторы и ученики, дабы остановить заражение техноересью.
Пора, наконец, написать и про что-то хорошее.
Пока я смотрела материалы для обзора литературы к статье коллеги, наткнулась на прикольный доклад про то, что же "слышит" слой нейросети, распознающей речь (ASR == Automatic Speech Recognition):

https://www.youtube.com/watch?v=6gtn7H-pWr8&t=2s&ab_channel=Hung-yiLee

Доклад сравнительно несложный (чтобы понять основной смысл, достаточно иметь какое-то представление о ML и DL, но не обязательно быть специалистом по речевым моделям), а главным его достоинством являются примеры генерации речи по представлениям с разных слоев. На этих примерах авторы демонстрируют, как с прохождением данных через каждый последующий LSTM-слой модель все больше абстрагируется от информации об индивидуальных особенностях спикера (поскольку она не нужна для решения конечной задачи - перевода речи в текст), и представления, соответствующие разным спикерам, становятся все более похожи друг на друга. Обезличенный роботический "голос" глубоких слоев звучит очень атмосферно.
Тем, кто хочет разобраться поглубже, можно почитать исходную статью https://ieeexplore.ieee.org/document/9054675 с полноценным анализом происходящего и объяснением того, как извлекалась информация из слоев.
К главному недостатку доклада и статьи можно отнести то, что рассмотрены только модели с LSTM-слоями. Было бы интересно увидеть аналогичное исследование для трансформеров.

#объяснения_статей
Никого не смутило, что уважаемый господин 🇺🇸 Smith 🇺🇸 завел почту на mail.ru и зашел с того же (не российского) IP, что и злой товарищ 🇷🇺 Kushnareva 🇷🇺. Ну да ладно, главное, что в конце этого приключения Джон (в отличие от Лаиды) удостоился доступа к несчастной cudnn в версии для разрабов.