CS230 Lecture 2 @ Stanford (Рубрика #AI) Раньше я уже рассказывал про то, что начал изучать этот курс и посмотрел первую лекцию Andrew Ng. Дальше пришло время второй лекции, которую вел Kian Katanforoosh, со-автор этого курса, CEO и основатель Workera (платформа для оценки AI-навыков), сооснователь deeplearning.ai. Лекция выглядела как "recap про supervised" после изучения лекций с Coursera, но на деле это разбор инженерных рычагов в AI‑проектах: постановка задачи → данные/разметка → архитектура → loss → эксплуатация embeddings. Основные тезисы примерно следующие 1️⃣ Supervised ML решение - это обычный прод‑сервис - В проде «модель» = архитектура + веса (два артефакта), вокруг которых крутятся пайплайны, метрики и деплой. - Меняете задачу (binary → multi‑label) - меняется контракт лейблов, loss и метрики. Это не «добавили классы в датасет». - Capacity: размер модели должен соответствовать сложности + разнообразию данных + compute/latency. Иначе получите красивый dev и боль в реальном трафике. - Embeddings - когда расстояния в пространстве имеют смысл. Это фундамент поиска, рекомендаций, retrieval/RAG и «переиспользуемых представлений». 2️⃣ Три кейса, где всё решают данные и постановка 1) Определение day/night по картинке: сначала scope (одна камера или «весь мир»? indoor/outdoor? рассвет/закат/полярный день?) → потом сбор данных. Разрешение подбирают через human‑эксперимент: печатаем/показываем людям разное качество и ищем нижнюю границу информативности. Типичный компромисс: ~64×64×3 + небольшая CNN. 2) Работа с триггер словом типа "Алекса"/"Алиса"/"Siri", тут предлагается “activate”: классический паттерн каскада (дешёвое → дорогое): VAD/activity → trigger → ASR/intent. Чтобы не разметить руками бесконечные аудио, делают synthetic data + programmatic labeling: позитивы (“activate”), hard negatives (“deactivate” и похожие), фоновые шумы; скрипт миксует всё в 10‑сек клипы и генерит временные метки. Часто выигрыш даёт не «ещё данных», а правильная схема разметки по времени. 3) Face verification: «сравниваем пиксели» и «классифицируем каждого человека» не масштабируются. Решение - face embeddings + triplet loss (A,P ближе, чем A,N + margin). Дальше один embedding‑слой закрывает сразу три продукта: - verification: distance < threshold - identification: nearest neighbor по базе - clustering: k‑means/agglo 3️⃣ Как масштабироваться без дорогих меток - Self‑supervised: contrastive (SimCLR‑стиль) - две аугментации одного объекта должны быть ближе, остальные дальше; и next‑token prediction (GPT) - данные «размечают себя». - Weak supervision: используем естественные пары модальностей (image↔️text, video↔️audio, subtitles↔️video). Отсюда CLIP/ImageBind‑подходы и единые multimodal embedding‑spaces. Что можно почерпнуть для техлида DL/ML проекта - Начинайте проект с постановки + распределения + edge‑кейсов, не с выбора модели. - Ревьюйте свои ML модели как код: labels contract + loss + метрики (и их связь с бизнес‑ценой ошибок). - Делайте быстрые human‑тесты до траты GPU‑недель. - Оптимизируйте iteration speed: чуть меньшая модель/разрешение часто быстрее приводит к правильной системе. - Стройте архитектуру вокруг embedding‑API: «выучили представление один раз → решаем N задач». - Ищите в домене неразмеченные потоки и слабые связи (логи↔️действия, текст↔️телеметрия) - это топливо для self/weak supervision. #Software #ML #AI #Engineering #Architecture