/
Теги: искусственный интеллект
ISBN: 978-5-507-51196-9
Текст
П. А. ЛУКИН,
Я. М. МАШУКОВ,
Д. В. РОМАНОВ,
В. В. ТИМОФЕЕВ
РОБОТОТЕХНИКА
И ИСКУССТВЕННЫЙ
ИНТЕЛЛЕКТ
УЧЕБНИК
Издание второе, стереотипное
САНКТ-ПЕТЕРБУРГ • МОСКВА • КРАСНОДАР
2026
УДК 004.8
ББК 32.813я73
Р 58
Робототехника и искусственный интеллект : учебник для вузов / П. А. Лукин, Я. М. Машуков, Д. В. Романов, В. В. Тимофеев. — 2-е изд., стер. — СанктПетербург : Лань, 2026. — 128 с. : ил. — Текст : непосредственный.
ISBN 978-5-507-51196-9
Основное назначение данной книги — стать постоянно сопровождающим учебником
по теме «Робототехника и искусственный интеллект» для студентов вузов, в первую очередь, по направлениям и специальностям естественно-научного цикла (математика, информатика, физика, биология и пр.).
Учебник предназначен для обучения учащихся теории информатики на протяжении
нескольких лет, с 3 по 11 классы (в первую очередь для учащихся психолого-педагогических классов), а также студентов учреждений высшего педагогического образования при
изучении искусственного интеллекта и робототехники.
УДК 004.8
ББК 32.813я73
Обложка
П. И. ПОЛЯКОВА
© Издательство «Лань», 2026
© Коллектив авторов, 2026
© Издательство «Лань»,
художественное оформление, 2026
ОГЛАВЛЕНИЕ
Предисловие
5
Начальный уровень — робототехника
8
Где живут роботы? ............................................................................................... 9
Как устроены роботы? ......................................................................................... 9
Как роботы думают? .......................................................................................... 10
Самоконтроль по начальному уровню............................................................. 11
Ответы для самопроверки ................................................................................. 14
Краткое содержание блока начального уровня............................................... 19
Начальный уровень — искусственный интеллект
21
Где работает ИИ? ............................................................................................... 22
Что умеет ИИ? .................................................................................................... 23
Как познакомиться с ИИ?.................................................................................. 24
Самоконтроль по начальному уровню............................................................. 26
Ответы для самопроверки ................................................................................. 28
Краткое содержание блока начального уровня............................................... 31
Базовый уровень — робототехника
33
Где живёт программа? ....................................................................................... 35
Как запрограммировать? ................................................................................... 36
На каком языке писать? ..................................................................................... 37
Как программа видит мир?................................................................................ 38
Самоконтроль по базовому уровню ................................................................. 39
Краткое содержание блока базового уровня ................................................... 41
Базовый уровень — искусственный интеллект
50
Кто должен решать задачи — программист или ИИ? .................................... 51
Как обучать ИИ? ................................................................................................ 52
Как ИИ может помочь ученику? ...................................................................... 53
Самоконтроль по базовому уровню ................................................................. 54
Краткое содержание блока базового уровня ................................................... 55
Углубленный уровень — искусственный интеллект
66
Как именно ИИ решает задачи?........................................................................ 67
Чем отличается нейросеть от ИИ? ................................................................... 68
Почему без нейросетей не получалось?........................................................... 68
Самоконтроль по углубленному уровню......................................................... 69
Ответы для самоконтроля ................................................................................. 70
Краткое содержание блока углубленного уровня .......................................... 71
3
Углубленный уровень — робототехника
93
Как управлять жестами? .................................................................................... 94
Как говорить с Arduino? .................................................................................... 95
Что надо знать программисту и робототехнику? ........................................... 95
Самоконтроль по углубленному уровню......................................................... 97
Ответы на вопросы ............................................................................................. 98
Уровень ВУЗ
99
Какие задачи решает специалист в педагогическом вузе? .......................... 100
Ключевые вопросы безопасности при переходе на новый уклад ............... 103
Самоконтроль по уровню вуза ........................................................................ 106
Ответы для самопроверки ............................................................................... 108
Краткое содержание блока уровня вуза......................................................... 113
Список литературы
119
4
ПРЕДИСЛОВИЕ
Для будущих учителей чрезвычайно важным представляется формирование у них еще со школьной скамьи готовности не только «учить учиться»,
но и учить «учиться учить». Подобные компетенции и мотивацию к будущей
профессиональной деятельности можно и необходимо формировать у учеников и студентов в процессе их предметного обучения.
Учебная тема «Робототехника и искусственный интеллект» является базовой в информационной подготовке обучающихся в школе, фундаментальной
составляющей курса информатики при обучении студентов в педагогических
колледжах и вузах.
Создание психолого-педагогических классов в стране и актуальность
профессиональной ориентации школьников на педагогическую профессию
обуславливают необходимость моделирования структуры и содержания учебных средств, позволяющих формировать их готовность «учиться учить».
В этой связи учебник предусматривает возможности:
• не только научить обучаемого понимать суть основных понятий
теории, но и учить обучать других понимать суть теории;
• не только научить обучаемого решать задачи, но и учить обучать
других решать задачи.
Наблюдающееся в последнее время резкое падение интереса учащихся к
обучению с использованием традиционных учебников связано с новой ментальностью современной молодежи. К примеру, клиповое мышление обуславливает для них привлекательность контента в социальных сетях, который
имеет, как правило, вопросно-ответный, фрагментированный формат.
Идея разработки настоящего учебника связана с инверсионным и сквозным представлением содержания учебного материала с позиций ментального
подхода. Ее концептуальной основой является структурирование учебной информации на основе ментальных схем и обобщающих стратегий «учиться
учить»:
1. Стратегия свертывания информации. Для современного образования
стратегия позволяет предоставлять больший объем информации и знаний обучаемому за более короткое время, например, путем визуализации с применением интеллект-карт, структурно-ментальных схем.
2. Стратегия переноса знаний и гибкости мышления. Обеспечивает перенос навыков и умений, приобретенных при решении одной задачи, к другим,
путём аналогий и подобия. На смену решений задач по образцу (по шаблону),
стратегия предлагает схемы, которые применимы для широкого круга задач.
3. Стратегия готовности памяти. Стратегия предполагает запоминание нужной информации и возможность ее извлечения в нужный момент для
решения возникшей задачи.
4. Стратегия индивидуализации при коллективном обучении. Стратегия
подразумевает использование техник геймификации, разновозрастное обучение по принципам: «старшие для младших»; «младшие для старших».
5
Для реализации обозначенных стратегий и опираясь на принципы ментального подхода в образовании, были определены три позиции при выборе
формата представления и структурирования содержания учебника:
• «перевернутый» или инверсионный (вопросно-задачный) формат
структурной композиции учебного контента;
• «сквозной» или вертикальный отбор содержания учебного контента по принципу «вертикального рычага»;
• принцип «прозрачного ящика» на основе структурно-ментальных
схем для визуализации всех компонент учебного материала: теории, задач, контроля.
Первая позиция определила главную структуру учебника «Робототехника и искусственный интеллект» в виде дерева вопросов.
Вторая позиция связана с вертикальной преемственностью содержания
темы и отражает учебный материал школьного курса информатики с 1 по
11 классы и программу основной содержательной линии курса «робототехника
и искусственный интеллект» для педагогических университетов.
Третья позиция отражает эффект визуализации на основе принципа
«прозрачного ящика» для всех аспектов обучения. Для этих целей используются интеллект-карты и структурно-ментальные схемы.
Основное назначение данной книги — стать постоянно сопровождающим учебником по теме «Робототехника и искусственный интеллект» для учащихся школ и учителей, для студентов педагогических колледжей и вузов, в
первую очередь, по направлениям и специальностям естественно-научного
цикла (математика, информатика, физика, биология и пр.).
Учебник входит в комплект инновационных учебников по основным содержательным линиям курса информатики:
1. Информация и информационные процессы.
2. Устройство компьютера. Компьютер. Архитектура.
3. Моделирование и формализация.
4. Алгоритмизация и программирование.
5. Информационные технологии.
6. Компьютерные телекоммуникации.
7. Социальная информатика.
8. Робототехника и искусственный интеллект.
В авторский коллектив входят преподаватели, аспиранты и магистранты
Красноярского государственного педагогического университета имени
В. П. Астафьева. Авторы благодарят Смолину Анну Григорьевну, Спирину
Марьяну Вадимовну, Угревич Дарью Владимировну за огромную помощь
при работе над разделом, посвященном promt engineering.
Научный руководитель проекта: Бархатова Дарья Александровна.
Научный консультант: Пак Николай Инсебович.
6
7
НАЧАЛЬНЫЙ УРОВЕНЬ — РОБОТОТЕХНИКА
8
Где живут
роботы?
Робот — это автоматическое устройство, предназначенное для осуществления различного рода
механических операций и действующее по заранее заложенной программе.
Для выполнения работ, с которыми человек не может справится физически
(очень тяжёлые, очень точные, очень быстрые, очень маленькие или очень
долгие) человек создаёт инструменты (рычаги, микроскопы, пинцеты, носилки, тачки, молотки). Добавляя к инструменту источник энергии, мы получаем машину (погрузчик, кран, поезд, квадрокоптер, автомобиль, экскаватор, самолёт, токарный и сверлильный станок, 3D-принтер).
Робот — это машина, которой вместо человека-оператора управляет программа внутри компьютера робота. Если вы видели робота-пылесоса, или
робота-курьера, то вы уже знакомы с их возможностями: они могут сами
прокладывать и находить путь, разбираться с препятствиями и выполнять
поставленную человеком задачу самостоятельно.
На производстве (например, на автомобильном заводе) можно найти робоманипуляторы самого разного размера и функциональности, в зависимости
от типа выполняемой задачи — сборочные, сварочные, режущие, красящие. Наряду с ними можно встретить разгрузочно-погрузочных роботов,
упаковщиков, сортировщиков, формовщиков и многих других.
Как устроены
роботы?
Роботы могут быть устроены очень по-разному,
в зависимости от их назначения и функций, но у
них всегда есть несколько ключевых компонент.
Вспомним, что робот — это машина, которой из компьютера управляет
написанная человеком программа.
Как у машины, у робота есть:
• механическая часть — тело робота. Оно несёт в себе все остальные
компоненты. В качестве ходовой части обычно выступает тележка
для подвижных роботов или станина, как у станка, если робот работает на одном месте (стационарный);
• двигатели: роботы могут быть оснащены двигателями многих типов,
такими как электрические, пневматические или гидравлические.
Двигатели обеспечивают движение и манёвренность. С двигателей
сила передаётся на манипуляторы и ходовую часть через шестерёнки
и валы (механически), или по шлангам (гидравликой).
9
Роботом управляет программа. Чтобы программа знала, что происходит
снаружи, на роботе стоят:
• датчики, которые сообщают программе нужную информацию о
внешнем мире. Это может быть температура (как датчик кипения
у электрочайника), расстояние до препятствия (как глаза у роботакурьера), местоположение (GPS-навигатор у беспилотника)
и многое другое.
И, самое главное, в роботе есть компьютер:
• компьютер: программа выполняется в компьютере и подаёт из него
управляющие сигналы на моторы робота вместо человека. Компьютер в роботе маленький, его называют микроконтроллером. А программу пишет человек, и она может быть очень умной и сложной,
способной даже решать судоку [1].
Как роботы
думают?
Роботы не думают в точно таком же смысле, как
люди. Они могут выполнять сложные вычисления
и алгоритмические операции, но у них нет сознания или эмоций.
Думать — это процесс, который мы, люди, используем, чтобы принимать
решения, решать задачи и понимать мир вокруг нас. У роботов нет точно
такого же мышления, как у нас. Они не имеют чувств, желаний или эмоций, зато умеют делать полезную работу.
Чтобы робот знал, что и в каком порядке делать при наступлении предусмотренного события или появления новой информации, программист заранее придумывает для робота порядок решения задачи и даёт ему чёткую
инструкцию. Эта инструкция называется алгоритмом действий. Она записана как программа, которая управляет роботом вместо человека.
Другими словами, все решения принимают программисты, а роботы просто выполняют инструкции. Написание программ — это интересная и необычная работа. Ниже будут упражнения, чтобы вы почувствовали её сами.
Теперь в программу стали добавлять искусственный интеллект (на
нейросетях и не только), который сам решает часть задач за программиста.
10
САМОКОНТРОЛЬ ПО НАЧАЛЬНОМУ УРОВНЮ
Носилки
Погрузчик
Конвейер
Экскаватор
Лопата
Автомобиль
Автоматический погрузчик
Робот-пылесос
Машина-автопилот
Токарный станок
3D-принтер
Станок с ЧПУ
Автоматический манипулятор
Компьютер
Калькулятор
Фотоаппарат
Межзвёздный автоматический
корабль
Музыкальная шкатулка
Вопрос 2. К каким категориям вы отнесёте следующие вещи:
Объект
Инструмент
Носилки
Погрузчик
Конвейер
Экскаватор
Лопата
11
Машина
Робот
Шасси
Встроенный алгоритм
для выполнения
сложной задачи
Память
Датчики
Компьютер
Двигатель
Изделие
Источник
энергии
Вопрос 1. Отметьте в таблице галочками, у чего есть источник энергии,
двигатель, компьютер, датчики, память, встроенный алгоритм выполнения
сложной задачи, шасси, а у чего — нет.
Продолжение табл.
Объект
Инструмент
Машина
Робот
Автомобиль
Автоматический погрузчик
Робот-пылесос
Машина-автопилот
Токарный станок
3D-принтер
Станок с ЧПУ*
Автоматический манипулятор
Компьютер
Калькулятор
Фотоаппарат
Межзвёздный автоматический
корабль
Музыкальная шкатулка
Шарманка
Примечание. *ЧПУ — Числовое Программное Управление.
Вопрос 3. Помогите, пожалуйста, роботу-курьеру: ему надо отвезти заказ, а программист не предусмотрел в программе возникшие ситуации.
Задача 4. Роботу-курьеру грязью залепило сенсор, и у него осталась только карта со спутника.
Пожалуйста, напишите ему, как доехать до помеченного места и не
удариться о препятствия. Робот понимает команды «Вперёд», «Назад»,
«Повернуть влево» и «Повернуть
вправо» (можно сокращённо В, Н,
Л, П).
12
Задача 5. Робот случайно заехал на
служебную территорию, где работает
система глушения сигнала. Робот
надеется, что сможет получить одно
сообщение мессенджера «Телеграмм».
Пришлите ему, пожалуйста, всю инструкцию сразу, одним сообщением.
Робот проверил, что в сообщении
можно писать команды «ехать вперёд
до препятствия», «повернуть налево»,
«повернуть направо» и «назад на одну
клетку» (все остальные команды
сильно совпадают с помехами и искажаются).
Вопрос 6. К вам приехал любимый дядя, который узнал, что вы знакомитесь с робототехникой. Он очень оживился и засыпал вас вопросами, которые
его самого тут же заинтересовали:
• «А из чего состоит робот-пылесос?»
• «А как робот узнаёт, что перед ним тумбочка?»
• «А как робот помнит, куда вернуться для подзарядки?»
• «Чем робот собирает мусор?»
Какие варианты ответа приходят вам в голову? Что говорит Интернет?
Что говорит YouTube? Что говорят взрослые?
Вопрос 7. Посмотрите вокруг и подумайте (а потом посмотрите
в YouTube), какая машина или какой робот сделали то, чем вы сейчас пользуетесь — карандаш, телефон, бумагу, монитор, хлеб, упаковку для печенья, забор, бутылку для газировки и саму газировку, пластик, сталь для ложки, вилку,
стол, аккумулятор, самокат?
13
ОТВЕТЫ ДЛЯ САМОПРОВЕРКИ
Встроенный
алгоритм
выполнения
сложной
задачи
Шасси
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
Машина-автопилот
✓
✓
✓
✓
✓
✓
✓
Токарный станок
✓
✓
✓
3D-принтер
✓
Станок с ЧПУ
✓
✓
✓
✓
✓
✓
Автоматический манипулятор
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
Автомобиль
✓
✓
Автоматический погрузчик
✓
Робот-пылесос
Предмет
Датчики
✓
Компьютер
✓
Двигатель
✓
Источник
энергии
Память
Ответ на вопрос 1.
Носилки
Погрузчик
Конвейер
✓
Экскаватор
Лопата
✓
✓
✓
Компьютер
✓
✓
Калькулятор
✓
✓
Фотоаппарат
✓
Межзвёздный автоматический корабль
✓
✓
✓
✓
✓
✓
✓
✓
✓
Музыкальная шкатулка
Ответ на вопрос 2. Один из вариантов деления на категории предложен
ниже (с объяснением хода мысли). Если вы приняли другое решение — ничего
страшного, просто объясните вашу логику похожим образом.
Инструменты:
− носилки — используются для переноски грузов или людей, работают за счет
физической силы человека;
14
− лопата — ручной инструмент, применяемый для различных работ, включая
землекопные;
− калькулятор — портативное устройство для выполнения арифметических и
иногда более сложных математических операций. Не содержит программы,
доступной для изменения.
Машины:
− погрузчик — используется для подъема и перемещения различных грузов.
Управляется человеком-оператором, не программой;
− конвейер — механизм для непрерывного перемещения материалов, грузов и
предметов;
− экскаватор — машина для земляных работ;
− автомобиль — транспортное средство, предназначенное для перевозки людей или грузов. Управляется человеком;
− токарный станок — станок для обработки изделий вращением. Энергия берётся от двигателя, а не мускульной силы оператора;
− фотоаппарат — устройство для получения изображений объектов;
− музыкальная шкатулка, шарманка — оба эти устройства представляют собой механические устройства для воспроизведения музыки;
− компьютер — электронное устройство, способное выполнять широкий
спектр вычислительных и логических операций. Не влияет на мир, не собирает информацию о внешней среде через датчики;
− 3D-принтер — устройство для создания трехмерных объектов методом последовательного наложения материала. Управляющий принтером компьютер частью принтера не является;
− станок с ЧПУ (числовое программное управление) — станки, управляемые
компьютером с предварительно заданной программой. Станок не использует датчики для контроля изменений во внешней среде с целью организации обратной связи для достижения поставленной цели.
Роботы:
− автоматический погрузчик — механизированное устройство для автоматической загрузки и разгрузки. Имеет систему компьютерного зрения и ограниченный интеллект;
15
− межзвёздный автоматический корабль — космическое транспортное средство, предназначенное для выполнения миссий между звездами без непосредственного участия человека;
− робот-пылесос — автоматизированное устройство, предназначенное для
уборки. Сам планирует маршрут, принимает решения о подзарядке и выгрузке мусора, степени чистоты;
− машина-автопилот — транспортное средство, способное осуществлять
управление без вмешательства человека;
− автоматический манипулятор — устройство, способное автоматически
выполнять различные операции с объектами по заранее заданной программе. Многие манипуляторы используют системы компьютерного зрения
для определения положения объекта и хода работы. Вместе с управляющим
микроконтроллером они и образуют робота.
Ответ на вопрос 3. Дорогой читатель, позволю небольшие замечания.
Во-первых, если ваша программа заработала, то вы — программист, решивший задачу. Это — единственное и главное! Задача решена. Во-вторых, при
работе с программами инструкцию придётся воспринимать буквально, с точностью до запятых, т. е. соблюдать написание команд и их синтаксис. Причина
простая — без этого робот не сможет исполнить программу, она в нём «заклинит» (как и чайник не сможет вскипятить воду, если в него воду поставить
прямо в бутылке). В-третьих, правильных ответов бывает много. Самое главное для нас — что программа даёт правильный результат.
Вместо споров о том, какое решение хорошее или плохое, — делитесь,
учитесь у товарищей другим приёмам решения задачи, а наш ответ (или ответ
учителя) воспринимайте только как дополнение, совет и пример того, что
можно делать иначе (и не больше).
Ответ на задачу 4. «Вперёд» «Вперёд» «Вперёд» «Повернуть вправо»
«Вперёд» «Повернуть влево» «Вперёд» «Вперёд» «Вперёд» «Вперёд».
Можно использовать сокращения: ВВВПВЛВВВВ.
Если вы писали «Три раза вперёд» и т. д. — поздравляю:
− вы поняли, как можно улучшить сам язык, на котором вы и робот фиксируете программу! Именно поэтому создано так много языков программирования — каждый идеально подходит под свой уникальный круг задач;
− наш робот про этот язык ещё не знает и такая программа будет воспринята как ошибка. Это будет не буквальное соблюдение системы команд.
Простите.
16
Ответ на задачу 5. «Ехать вперёд до препятствия» «повернуть налево»
«назад на одну клетку» «повернуть направо» «ехать вперёд до препятствия».
Обратите внимание на трюк, которым мы прошли поворот: «повернуть
налево» «назад на одну клетку» «повернуть направо». В большинстве ситуаций
нужных команд или их сочетаний не будет, и программисты как раз и занимаются тем, как выполнить задачу, комбинируя существующие возможности. Инженеры — как собрать изделие из существующих узлов, и т. д. Это — часть работы многих и многих создателей и проектировщиков, учёных и руководителей.
Ответ на вопрос 6. Это открытый вопрос, даже больше направления для
любопытства, поэтому годится любой рабочий ответ. А если вы придумали
свой собственный, то вы уже становитесь изобретателем!
Датчики: робот может иметь встроенные датчики, такие как камеры,
микрофоны или ультразвуковые датчики, которые позволяют ему обнаруживать и отслеживать положение тумбочки.
Распознавание объектов: робот может обладать способностью распознавать объекты и их движения, что позволяет ему отслеживать местоположение тумбочки.
Обучение: робот может обладать способностью учиться и распознавать
закономерности в окружающей среде, что позволяет ему определять местоположение тумбочки на основе прошлого опыта.
GPS: Робот может иметь систему GPS, позволяющую определять своё
местоположение и памятью координат старого местонахождения тумбочки.
Связь с другими роботами: робот может общаться с другими роботами
в этом районе, что позволяет ему запросить помощь в поиске тумбочки.
Что касается того, как робот узнает, куда вернуться для подзарядки, у
него может быть встроенная навигационная система, которая позволит ему
найти дорогу обратно к зарядной станции. В качестве альтернативы робот может иметь возможность общаться с другими роботами в этом районе, чтобы
запросить помощь в поиске зарядной станции. Зарядная станция может передавать ему сигнал, как маяк.
Чаще всего робот запоминает обратную дорогу, чтобы вернуться на базу
за гарантированное время.
Ответ на вопрос 7.
Шина: шины собираются цепочкой операций, многими машинами, на
автоматической линии. Для шины надо сперва изготовить техническую сажу,
резину, корд, да и сами машины: https://clck.ru/3ACgK8.
17
Карандаш: простой карандаш обычно состоит из следующих частей:
Корпус (деревянный: кедр, липа или сосна); грифель (сердцевина карандаша:
состоит из графита, глины, воды и связующего вещества. В зависимости от
соотношения компонентов, грифель может быть твёрдым или мягким):
https://clck.ru/3ACgNG.
Телефон: (смартфон) состоит из: корпуса, дисплея, процессора, графики, памяти, камеры, аккумулятора, датчика, связи, операционной системы:
https://clck.ru/3ACgj6.
Бумага: она делается из: подготовки сырья, варки сырья, формирование бумажного полотна, прессование и сушка, отделка, намотка:
https://clck.ru/3ACgjc.
Монитор: сборка корпуса, установка электронных компонентов, тестирование изображения: https://clck.ru/3ACgi8.
Хлеб: процесс производства начинается с замеса теста, который затем
отправляется на автоматические линии для формовки и выпечки. Также используют специальные машины для нарезки и упаковки готовой продукции:
https://clck.ru/3ACgun.
Примечание: как вы уже убедились, почти всё, на что падает наш взгляд,
создано человеческим трудом, многократно усиленным машинами (станками
и роботами). Есть и невидимый вклад — человеческий гений, который догадался до того, как именно это всё можно начать делать, потом воплотить
в жизнь, а потом автоматизировать. Хотя большинство людей редко об этом
задумывается, вы, когда начнёте выбирать будущую профессию, будете подробно узнавать, как именно вносит вклад во всю эту работу технолог и математик, химик и поэт, художник и конструктор, учёный и менеджер, предприниматель и инженер. Это стоит знать хотя бы потому, что без поддержания
этой работы мы постепенно потеряем всё, что нас окружает, от еды до городов.
18
КРАТКОЕ СОДЕРЖАНИЕ БЛОКА НАЧАЛЬНОГО УРОВНЯ
Человек создаёт и применяет инструменты. Вместо зубов он использует
нож и ножницы, тяжёлые грузы перемещает рычагом и лебёдкой, перевозит их
на тележке и корабле, маленькие объекты изучает в микроскоп, а дальние —
в телескоп. Инструменты многократно увеличили возможности человека.
Первая промышленная революция опиралась на массовое внедрение паровых машин — станков, паровозов, пароходов. Их
сменили машины на электрических и бензиновых двигателях. Новые источники энергии
и двигатели дали мускулы современной цивилизации, работающей на угле, атоме, бензине и электричестве.
Только сравните лебёдку и
подъёмный кран, или тележку
и погрузчик. Сразу видно, что
теперь тяжёлую работу делают
мотор и машина, а оператор
только управляет машиной.
Сейчас машины делают почти всю тяжёлую и монотонную работу —
ткут ткань, собирают автомобили и телефоны, делают авторучки и клавиатуры,
пашут поля, изучают космос [2, 3, 4].
Первыми краном, погрузчиком и станком человек управлял сам, лично
принимая решения. Затем простые понятные действия инженеры смогли автоматизировать с помощью датчиков. (Вспомните и сравните чайник на газовой
плите и электрочайник, в котором датчики измеряют температуру и делают
процесс кипячения автоматическим, освободив внимание человека для других
задач.)
Вершина этой пирамиды — робот. В роботе сигнал с датчиков идёт сразу
в компьютер, где программа решает, что и как делать дальше.
Роботы состоят из нескольких ключевых компонентов.
1. Механика: это тело робота, в котором находятся остальные детали.
Форма и структура робота заданы инженером под решение конкретной
задачи. Инженер помещает внутрь робота различные механические или
гидравлические передачи, ставит манипуляторы и добавляет роботу
средства передвижения.
2. Двигатели: роботы оснащаются двигателями и источниками энергии
различного типа (электрические, пневматические или гидравлические).
Они дают роботу силу и энергию для работы.
3. Актуаторы: робот может дополнительно использовать светодиоды,
электромагниты, нагреватели, излучатели и многое другое для воздействия на окружающий мир.
19
4. Датчики: роботы используют разнообразные датчики, такие как камеры,
лазеры, ультразвуковые сенсоры, датчики давления и температуры, GPS
и многие другие. Датчики преобразуют информацию об окружающей
среде в электрический сигнал, который затем превращается в числа
внутри программы.
5. Компьютер и программа: в роботе есть маленький компьютер (микроконтроллер), который выполняет программу, задающую поведение и решения робота. Мозг робота — именно здесь!
Роботы не думают так, как люди
Думать — это процесс, который мы, люди, используем, чтобы решать задачи и понимать мир вокруг нас. У роботов нет точно такого же мышления, как
у нас. Они не имеют чувств, желаний или эмоций.
Вместо этого программист сам придумывает для робота порядок действий для решения задачи и пишет в робота чёткую инструкцию, что и в каком
порядке делать. Говорят, что он создаёт алгоритм решения задачи и пишет
программу. Если в программе для робота (вспомните робот-пылесос или интерактивную игрушку) надо что-то узнать о внешней среде, в робота встраивают датчики, переводящие сигнал в число внутри программы.
Другими словами, все решения принимают программисты, а роботы
просто следуют инструкциям. Работа программиста — интересная и необычная.
Вопросы 3–5 пытались дать вам почувствовать характер этой работы самим, но она
Будьте как хакер, который
намного более интересна, разнообразна и
подбирает ключи и взламывает задачу, свободно выбирая
красива. Происходящее обескураживает
и пробуя всё, что придёт в готолько первое время, пока вы знакомитесь с
лову, посмеиваясь и переходя
непривычными подходами и техниками. Пок следующему способу. Или
сле овладения базой вы творите, даже не замедитируя над тем, почему
мечая старых трудностей, и просто получаете
ожидаемое не сработало. Путь
удовольствие от решения загадок. Как и с
важен так же, как и результат.
языком, изучайте неудачи, пробуйте экспериментировать и идти дальше, внимательно и
с интересом изучайте происходящее. На самом деле каждая неудача — это ценнейший факт. Природа вам честно, как своим, показала, как на самом деле работает то, что вы написали или сделали. Смотрите, учите, пользуйтесь, применяйте.
20
НАЧАЛЬНЫЙ УРОВЕНЬ —
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ
21
Машинный перевод
Где работает
ИИ?
Чат-боты
Распознавание
текстов
Искусственный интеллект (ИИ) — это технология, которая помогает компьютеру делать задачи,
ранее доступные только человеку: понимать речь
и текст, создавать по подобию, предлагать варианты решения сложных задач, планировать с учётом ограничений.
ИИ работает в компьютерах, как волшебные мозги, которые помогают машинам самостоятельно учиться и принимать решения. Несколько (далеко
не исчерпывающих) примеров:
1. Компьютерные игры: искусственный интеллект используется в
компьютерных играх для создания виртуальных противников, которые могут умно действовать против игроков.
2. Виртуальные ассистенты: например, Маруся или Алиса, могут отвечать на вопросы или выполнять задания. Для их создания использованы технологии искусственного интеллекта.
3. Компьютерные художники: Кандинский или Мidjourneу могут по
описанию нарисовать картинку.
4. Медицинские исследования: ИИ помогает врачам анализировать
данные пациентов и делать точные прогнозы о заболеваниях.
5. Автомобильная промышленность: искусственный интеллект применяется в автомобилях для создания автопилотов и систем безопасности.
6. Переводчики в компьютере: знают все ходовые языки мира.
7. Генеративные технологии: Suno, Udio и другие сети генерируют
музыку в любых жанрах.
8. Поисковые системы: Яндекс, Бинг и Гугл могут по нескольким словам найти нужную информацию среди триллионов веб-страниц.
22
Что умеет ИИ?
Искусственный интеллект (ИИ) даёт компьютеру функции, на которые ранее были способны
только люди.
1. Решать задачи: ИИ может помочь нам решать сложные задачи, такие как математические задачи или головоломки. Он получает на
вход условия задачи и правила операций, а возвращает цепочку действий для решений задачи [6].
2. Играть в игры: ИИ получает правила игры и игровую ситуацию,
после чего находит выигрышные ходы. (Мы сделаем это на стр. 86.)
3. Искать музыку: ИИ может помочь находить и узнавать музыку. Он
получает на вход огромное количество примеров (вся Яндекс.Музыка) и описания треков, ваши лайки. После этого он способен найти
трек, попадающий под ваше описание или который вам понравится.
23
4. Распознавать лица: ИИ помогает компьютерам узнавать лица людей на фотографиях или в видео. Он получает множество примеров
лиц и тренируется не путать разных людей. После этого ему можно
показать фотографию человека, и он найдёт все остальные фотографии этого же человека, т. е. «узнает его». Мы решим похожую задачу
на с. 74.
5. Помогать в учёбе: Искусственный интеллект может быть использован для обучения, помогая детям учиться математике, английскому и
другим предметам. Он получает множество примеров задач и ошибок и учится показывать ошибки в новых решениях.
6. Писать текст: прочитав весь Интернет, компьютер может допечатать
текст так, как ответил бы настоящий человек-эксперт.
Таким образом, искусственный интеллект — это многогранная технология,
которая помогать нам во многих сферах жизни, разгружая человека от выполнения скучных задач обработки информации и освобождая его для интересной работы: исследований, анализа, принятия сложных решений и
стратегического планирования.
Как познакомиться
с ИИ?
Мы уже знаем, что ИИ решает многие задачи, решение которых ранее поручалось
специалистам-людям.
Пусть он что-то сделает и нам!
1. Наберите запрос «крутые примеры генеративного ИИ» в вашей социальной сети или поиске. То, что просеяло миллиарды страниц
и нашло нужное именно вам — это ИИ.
2. ИИ составляет персональные рекомендации в ленте новостей и сервисах (вроде КиноПоиска, Яндекс-Музыки, VK Video и других).
Просто сравните, как выглядит лента у вас и вашей бабушки.
3. ИИ как стратег: поиграйте в программу-шахматы, выставив уровень на минимум. Потом увеличивайте уровень сложности.
4. Спросите Алису, как решить сложную задачу. Перед этим решите
задачу сами, и только потом узнайте решение Алисы. Попросите
её прокомментировать, где можно улучшить ваше решение.
5. Вебинары и мероприятия: многие организации проводят мероприятия и вебинары о искусственном интеллекте для детей, где
24
им рассказывают о том, как он используется в реальной жизни. Это
отличный способ узнать, как выглядит создание и обучение ИИ
с точки зрения будущего специалиста или пользователя [5].
6. Спросите что-нибудь у ИИ: например, «Расскажи про отличие континентального климата от морского» здесь [7].
7. Напиши уравнение и попроси ИИ его решить (надо будет поставить
приложение PhotoМath) [6].
8. Онлайн-ресурсы: существуют онлайн-ресурсы, такие как видеоролики и мультфильмы о технологии искусственного интеллекта, которые могут помочь детям лучше понять эту тему.
9. Кандинский поможет вам нарисовать картинку.
10.Загадайте киноактёра или известного человека. Проверьте, что «Акинатор» отгадает его с нескольких вопросов [8].
11.Откройте на YouTube английское видео в Яндекс.Браузере. Он предложит его перевести на русский, как в кинотеатре.
👆 Традиционно, все ссылки на дополнительные ресурсы располагают
в конце учебников и нумеруют. Если вы хотите перейти на ресурс, то открываете конец книги и быстро находите нужную ссылку в списке по её номеру.
Учитывая, что бо́льшая часть ресурсов цифровые, в конце есть QR-код для
доступа к электронному навигатору по ресурсам.
Кандинский
Запрос: Нарисуй котёнка робота
Режим: Генерация по тексту
Стиль: Цифровая живопись
Соотношение сторон: 1:1
Модель: Kandinskу 3.0
Негативный промпт: Нет
25
САМОКОНТРОЛЬ ПО НАЧАЛЬНОМУ УРОВНЮ
Вопрос 1. А когда, как и для чего мы используем интеллект? Подумайте
и ответьте, какие задачи в школе были самыми трудными для вас (расположите в порядке возрастания сложности):
1) 12 + 45 = ?
2) 2 + 2 = ?
3) написать пять слов без ошибок;
4) диктант на две страницы;
5) сложить пять двузначных чисел;
6) расставить знаки препинания;
7) написать изложение небольшого текста;
8) написать сочинение на заданную тему.
Вопрос 2. Что для вас было самым сложным в вопросе 1? Как именно
вы решаете каждую задачу (мысленно)? Что надо знать и уметь, чтобы решить
каждую задачу? Сравните с ответами товарищей.
Вопрос 3. Охарактеризуйте задачи по уровню сложности для вас лично:
1) поиск перевода слова по словарю;
2) сложение двух чисел в столбик;
3) произведение двух чисел по таблице умножения;
4) произведение в столбик;
5) определение цвета прямоугольника на картинке;
6) определение формы фигуры на картинке;
7) поиск самого короткого пути в лабиринте справа.
Вопрос 4. Можете ли вы сказать действия, которые вам надо сделать в
определённом порядке для решения задачи из вопроса № 3? Для всех ли задач
это можно сделать?
26
Вопрос 5. Отметьте технологии, где, по-вашему, используется ИИ:
− поиск самого короткого маршрута в навигаторе;
− калькулятор в телефоне;
− голосовой ввод сообщений;
− определение лица на фотографии;
− запись речи диктофоном;
− сложение двух десятичных чисел;
− проверка, по правилам ли сходила фигура в игре;
− компьютерный оппонент в шахматной программе;
− определение расстояния до стены по датчику;
− определение температуры по датчику и автоматическое выключение
чайника;
− распознавание штрих-кода.
Вопрос 6. Попросите ИИ (в чатботе) рассказать вам о гравитации как
для учёного, как для геймера и как для четвероклассника.
Попросите его сочинить историю про то, как Красная Шапочка приручила Волка, и он стал предком всех собак.
Попросите придумать поздравление на юбилей в стиле грузинского тоста, как историю на шесть предложений о том, как Слава вытащил Камаз
из грязи в одиночку.
27
ОТВЕТЫ ДЛЯ САМОПРОВЕРКИ
Ответы на вопросы 1 и 2
Цель вопросов была в том, чтобы вы задумались над тем, как именно вы
сами решаете свои задачи. Обучаясь в школе, часть задач вы начинаете решать
автоматически (приобретаете навык), но одновременно вы ещё и тренируете
свой интеллект. И ваш интеллект порождает алгоритм действий (решения)
для задач, которых вы никогда не видели раньше.
По этому принципу и подобраны задачи — они опираются на разные
грани ваших умений и способностей:
1) «12 + 45 = ?» Тут можно сложить столбиком: выписать числа одно под
другим, сложить первые разряды, учесть перенос и т. д. Это умение или
навык;
2) «2 + 2 = ?» Тут используется память;
3) «написать пять слов без ошибок» — нужны память, поскольку слова
произносятся немного не так, как пишутся, и распознавание речи;
4) «диктант на две страницы» — аналог предыдущей задачи;
5) «сложить пять двузначных чисел» — аналог первого вопроса, но требуется память (рабочая или на странице) для хранения промежуточного результата;
6) «расставить знаки препинания» — нужно знать правила и увидеть условия их применения (и применить без ошибок);
7) «написать изложение небольшого текста» — здесь уже задача намного
более глубокая: требуется запомнить модель описанного текстом и описать её речью для передачи информации в другой форме другому человеку;
8) «написать сочинение на заданную тему» — ещё более сложная задача,
требующая наличия своего собственного опыта и применения вышеописанного: речи, правописания и т. д.
Замечание: прежде чем идти дальше, давайте обсудим, зачем в учебниках задачи и вопросы. Часть из них просто дают верный ответ для проверки
умения и навыка. Если ответ совпал, вы овладели техникой.
Но самые интересные задачи только обращают ваше внимание на то, из
чего устроено и как работает то, про что вам дали задачу. В таких задачах сам
ответ не важен так сильно, как ваше сфокусированное внимание на самой задаче: про что она говорит, как вы чувствуете себя, когда ищете ответ, почему
вы считаете это ответом, и так далее. Не спешите идти дальше, решив такую
28
задачу — дайте своей голове немного времени и тишины, чтобы в ней появились новые идеи, а вы осознали свой опыт. И учитель, обратите внимание, при
беседе над такими задачами общается именно про то, как вы её решали, какие
ещё есть подходы к решению — потому что другие подходы содержат другое
восприятие, другой взгляд на то же самый мир.
Ответы на вопросы 3 и 4
1) «Поиск перевода слова по словарю» — простой поиск;
2) «сложение двух чисел в столбик» — требуется навык или умение следовать инструкции (программе);
3) «произведение двух чисел по таблице умножения» — требуется умение
пользоваться инструментом (таблицей);
4) «произведение в столбик» — требуется навык или умение следовать инструкции (программе);
5) «определение цвета прямоугольника на картинке» — требуется зрение,
которое не сводится к алгоритму (про это будет отдельная глава ниже).
Никто не скажет, как на самом деле он видит прямоугольник, но сможет
показать на него пальцем;
6) «определение формы фигуры на картинке» — см. выше;
7) «поиск самого короткого пути в лабиринте справа» — тут придётся мысленно пройти по лабиринту, отбросить тупиковые ветви, и т. д. Это одна
из классических задач, для решения которых создан ИИ, и про это будет
подробный разбор в третьей части учебника (см. с. 82).
(См. с. 52, 68: там будет разобрано, какая примерно часть задач решается
только методами машинного обучения и не алгоритмизуется.)
Ответ на вопрос 5
− «поиск самого короткого маршрута в навигаторе» — да, это классическая
задача ИИ (см. ч. 3 учебника);
− «калькулятор в телефоне» — нет, обычная программа;
− «голосовой ввод сообщений» — да, требуется распознавание голоса, т. е.
перевод информации из звуковой дорожки в текст. См. раздел про машинное обучение, которое относится к ИИ;
− «определение лица на фотографии» — да, см. машинное обучение;
29
− «запись речи диктофоном» — нет, сигнал (звуковая дорожка) просто записывается как есть, а потом проигрывается обратно в колонку;
− «сложение двух десятичных чисел» — нет, есть известный алгоритм, т. е.
это простая программа;
− «проверка, по правилам ли сходила фигура в игре» — нет, программа проверяет простые формализованные условия и всё;
− «компьютерный оппонент в шахматной программе» — да, требуется мысленно проигрывать варианты партий, анализировать, планировать, т. е. «думать»;
− «определение расстояния до стены по датчику» — нет, датчик сам конвертирует физический сигнал и выдаёт информацию в нужной форме;
− «определение температуры по датчику и автоматическое выключение чайника» — нет, простейший автомат (см. раздел ниже про Ардуино);
− «распознавание штрихкода» — зависит от алгоритма. Есть варианты без машинного обучения [9], есть варианты с технологиями из области машинного обучения [10].
Ответ на вопрос 6
Пример ответа от gemini-1.5-pro-exp-0801: «Высоко в горах Грузии, где
орлы парят над вершинами, а вино льётся рекой, случилось чудо! Наш дорогой
Слава, лев среди мужчин, оказался один на один с бедой — застрял могучий
Камаз, словно тур в глубоком снегу. Но Слава, с силой медведя и хитростью
лисицы, не растерялся! Он, один, без посторонней помощи, вытащил этого железного зверя, вернув его к жизни! Так выпьем же за Славу, за его силу, ум и
несгибаемую волю! Пусть жизнь его будет подобна горной дороге — извилистой, но всегда ведущей вверх! С юбилеем, дорогой друг!»
30
КРАТКОЕ СОДЕРЖАНИЕ БЛОКА НАЧАЛЬНОГО УРОВНЯ
Искусственный интеллект (ИИ) — это
целая научная область, занимающаяся созданием программ и устройств, имитирующих интеллектуальное поведение человека.
Одновременно саму такую программу или устройство для
краткости тоже называют искусственным интеллектом.
Определение получилось общее, потому что интеллектуальное поведение складывается из очень многих умений.
Как мы понимаем, учёные прежде всего хотят сделать своих роботов-помощников способными решать всё более сложные, «человеческие» задачи, и для
этого они исследуют и разбираются с тем, как думаем и решаем задачи сами
мы.
Давайте вместе подумаем, а какие
наши способности можно назвать интеллектуальными (умными)? Например, учёные
быстро выяснили, что часть задач передать
роботу оказалось легко: способность реагировать на сигнал датчика, быстро и много
считать, моделировать простые физические
явления.
Умный человек может победить нас в игре вроде шахмат.
Для этого ему надо уметь запоминать и анализировать ситуацию, планировать в уме,
понимать правила и предвидеть, куда мы можем сходить.
Но часть задач оказались «крепкими
орешками» — понимать человеческую речь, распознавать объекты обычного
мира (людей, дорогу, знаки), рукописный текст. Вспомните, как вам было тяжело научиться писать и читать, и как выглядит рукописный рецепт врача!
Программисты, создавшие голосовой набор на вашем телефоне, решили
очень сложную задачу не как программисты. Они вырастили в компьютере
функцию, ранее доступную только человеку-секретарю: по звуку голоса написать текст. И пошли дальше, научив компьютер переводить текст: по тексту на
одном языке писать текст на другом. А сейчас ИИ может делать множество
других отображений: по ситуации в игре предсказать выигрышный ход, по вопросу создать ответ, по ситуации на дороге выбрать правильное действие водителя автомашины. (Дополнительные примеры будут даны в остальных частях учебника.)
Коренные отличия ИИ от программирования стоит подчеркнуть:
• интеллект сам порождает алгоритм действий (решения) для задач, которых он никогда раньше не видел. Он делает это вместо программиста.
Разработчик теперь формализует (для ИИ) только постановку задачи
вместо программирования алгоритма решения;
31
• задачи решаются обучением или тренировкой:
o классический ИИ: задача сводится к такой постановке, что существующие техники способны решать задачу поиском, изучая её;
o машинное обучение: алгоритм получает на анализ огромное количество примеров и сам находит (обобщает) алгоритм решения задачи.
Важнейшей чертой текущего
состояния дел (начало 2024 г.) явля- Когда мы поднимаем груз слабым ИИ,
мы как бы используем погрузчик —
ется то, что все эти задачи пока реша- специализированное решение для подются по отдельности: отдельно есть нятия тяжести.
переводчики с языка на язык, голосовой набор, поиск пути в навигаторе.
Такие программы специалисты называют «слабым искусственным интеллектом», даже если они легко обыгрывают сильнейшего чемпиона мира по шахматам или Го. Слабым потому, что такая программа умеет только то, для чего
написана. Программа по шахматам без переделки не сможет сама научиться
писать стихи или планировать бюджет.
В противовес слабому учёные
трудятся над «сильным ИИ». В качестве примера сильного ИИ можно
привести второклассника: даже если
он ещё не умеет играть в шахматы,
он способен этому научиться сам, без
переделки головы. И физике, и рисованию — вообще всему, что умеет человек!
Сильный ИИ получит только задачу
(поднять груз силами одного робота),
и сам изобретёт или рычаг, или
домкрат, или подберёт с земли ключи
от погрузчика и сделает работу им —
он изобретёт способ, которого, возможно, не знали и мы сами!
32
БАЗОВЫЙ УРОВЕНЬ — РОБОТОТЕХНИКА
33
Как сделать первого робота?
Самое главное первым шагом — это собрать что-то работающее. Если вас
интересует быстрое знакомство, то самый простой вариант — найти
в школе или кружке конструктор Lego Мindstorm. На Lego Мindstorm очень
удобно собирать механическую часть робота (это же Лего), а алгоритм делается визуальным перетаскиванием команд, как в Кумире. Этот вариант
даст быстро почувствовать саму идею робота как машины с мотором и датчиками, на которой ездит и с которыми работает компьютер.
Комплект есть не во всех школах, программное обеспечение тоже надо покупать. Попробуйте найти Кванториум или ближайшую «Точку Роста»
[13]. Дальше можете выполнить упражнения и изучить список проектов
для новичков. Собирать можно по видео из Интернета или руководству.
Для будущего профессионального роста хороший старт даёт свободная
платформа Arduino, позволяющая собрать первую схему с датчиками,
кнопками и моторчиками уже так, как это делают настоящие специалисты
по всему миру. (Для этого даже не требуется покупать плату — простого
робота можно сделать в эмуляторе [14].)
После прохождения заданий этой главы вы будете готовы купить свою
первую плату и окунуться в мир промышленной электроники и робототехники. Примеры проектов перечислены в теоретической части.
На всякий случай: победа в олимпиаде НТИ даёт 100 баллов к ЕГЭ [15]!
34
Где живёт
программа?
1 — земля;
2 — светодиод;
3 — земля;
4 — +5 В;
5 — +3.3 В;
6 — питание 7–12 В;
При первом знакомстве Arduino обескураживает —
загадочная плата не подаёт никаких признаков
жизни и даже неясно, что с ней делать.
7 — USB тип B, питание и прошивка платы;
8 — кнопка перезагрузки (reset button);
9 — индикатор включения;
10 — цифровые входы/выходы (дискретные);
11 — аналоговые входы/выходы.
Тем не менее, начать просто и быстро действительно можно:
1. Ардуино работает от источника постоянного напряжения 5V,
которое оно получает по USB. Берём провод USB tуpe B
(«квадратный») и подключаем через него выход платы 7
к компьютеру или к зарядке от телефона (к любому USB питанию).
Если своего провода нет, то можно одолжить у ближайшего
принтера.
2. Когда питание подключено, плата уже работает. Заметить это
можно по тому, что на плате загорается светодиод 9. Это означает,
что теперь можно поподключать к плате устройства и проверить их
работоспособность при подаче питания.
35
3. Самое простое устройство — светодиод. Для проверки достаточно
подключить светодиод к выводам, как показано на схеме слева:
3 — короткая нога диода (земля) и 5 — длинная нога диода (+3,3 В).
Если ноги светодиода перепутать, он просто не загорится (и всё).
4. После проверки светодиодом мы морально готовы собирать
простые схемы. Например, к выводу на 5 В можно подключить
светодиод через резистор [16], или мотор, или генератор звука.
Ключевой физический принцип прост: плата только даёт напряжение питания на свои разъёмы, активируя тем самым присоединённые к этим выводам устройства.
А нам пора придумать конструкцию, подключить периферию и запрограмАрдуино способнее, чем источник
мировать робота.
питания на 3,3 или 5 В. Записанная в
Как
Ардуино программа позволяет включать
запрограммировать?
и выключать питание на выводах так же
легко и быстро, как дирижёр «включает»
и «выключает» инструменты оркестра.
При этом логика управления периферией может быть сколь угодно сложной и нелинейной.
Но что надо сделать, чтобы самим поуправлять датчиками и моторами?
Где именно находится и как именно выглядит эта загадочная программа?
👉 Программа создаётся на компьютере и записывается с компьютера
в Arduino по USB, как на флешку. Сразу после загрузки (или включения)
Arduino начинает выполнять записанную в него программу по кругу,
«24 часа в сутки», без остановки.
Для создания и записи программы надо [24]:
• поставить на компьютер Arduino IDE [23];
• написать программу (см. с. 42);
• перевести её в Arduino формат, т. е. скомпилировать в машинный код
микропроцессора платы;
• «залить прошивку» — перекачать машинный код в память платы.
Полный разбор доступен тут [24].
👉 Проект в Arduino IDE называется скетч (sketch) и содержит как текст
программы, так и настройки процесса работы с платой.
И перед нами встаёт очередной вопрос — какой язык использовать?
36
На каком языке
писать?
Программы для Arduino пишут в основном на
языке Си++. Примерно с 2016 г. появилась
возможность писать на диалекте языка Питон —
micropуthon [17].
Оба варианта имеют сильные и слабые стороны.
Программирование на Си++:
• огромное сообщество, множество обучающих примеров и открытых
проектов; много людей, знакомых с этой технологией;
• есть обкатанная, рабочая среда разработки Arduino IDE, работающая
под всеми операционными системами; доступно больше плат
и устройств, которые можно программировать;
• язык непривычнее, чем Питон: логика языка определяется
архитектурой железа, а не удобством восприятия программиста;
• машинный код, скомпилированный из Си++, компактнее и
выполняется быстрее, потребляя меньше ресурсов;
• сегодня это стандартное начало для большинства школьников.
Программирование на микроПитоне [17]:
• язык чище, более ясный и выразительный; скорость разработки
выше в разы; часто язык знаком со школы;
• доступна возможность работы с платой в интерактивном режиме,
буквально «режим исследования платы изнутри»;
• технология менее распространённая и доступна только на самых
ходовых платах; надо пробовать ставить среду разработки перед
выбором этой технологии в качестве основной.
👉 Хороший программист должен быть знаком с обоими языками, но
проще начинать с языка Си++. Потом мы рекомендуем попробовать Питон,
а окончательное решение отложить на пару лет до выполнения своего проекта в обоих техниках.
Идеи проектов для пробы сил даны в приложении, а нам осталось разобраться с внешним миром: смотрим, как робот воспринимает окружение.
37
Как программа
видит мир?
Давайте для примера посмотрим на алгоритм
работы электрочайника.
1. Если нажали ВКЛ, то записать в состояние чайника «ВКЛ».
2. Если состояние чайника «ВКЛ», то включить нагреватель, иначе
выключить его.
3. Если температура больше 98°, то записать в состояние чайника
«ВЫКЛ».
4. Повторить с п. 1
Соответствующая часть программа на языке Си выглядит почти так же:
int state = 0;
// Переменная для состояния (1 — ВКЛ,
//
0 — ВЫКЛ).
void loop() {
if (digitalRead(button))
// <= Датчик кнопки!
state = 1;
// Запоминаем, что чайник в состоянии ВКЛ.
if (state == 1)
// Если чайник включён, то ...
digitalWrite(pinHeater, HIGH); // … подаём питание на нагреватель,
else
// иначе
digitalWrite(pinHeater, LOW); // … отключаем питание от нагревателя.
if (analogRead(sensor) > T_98)
// <= Датчик температуры!
state = 0;
// Запоминаем, что чайник в состоянии ВЫКЛ.
}
Ранее мы узнали, что информацию извне робот получает через датчики, но
говорили про датчики как про часть тела робота, т. е. физическое устройство. Теперь мы видим их с точки зрения разработчика:
• есть специальные функции, которые подключаются библиотеками;
• в программе результат с датчика получают вызовом такой функцииинтерфейса, которая возвращает уже готовое значение — число.
Электрочайник — это очень простой пример с кнопкой и термометром.
Более сложные датчики определяют:
• расстояние до предмета;
• температуру;
• влажность;
• положение предметов, видимых камерой;
• координаты GPS, многое-многое другое.
38
САМОКОНТРОЛЬ ПО БАЗОВОМУ УРОВНЮ
Вопрос 1. Какой робот отвечает какой программе?
Устройства:
1) стиральная машина;
2) светофор;
3) электрочайник;
4) мультиварка.
Программа 1
Программа 2
int state = 0;
void loop() {
digitalWrite(PIN_RED,
LOW);
digitalWrite(PIN_GREEN, HIGH);
delay(20 * 60 * 1000);
digitalWrite(PIN_GREEN, LOW);
digitalWrite(PIN_YELLOW, HIGH);
delay(5 * 60 * 1000);
digitalWrite(PIN_YELLOW, LOW);
digitalWrite(PIN_RED,
HIGH);
delay(20 * 60 * 1000);
}
void loop() {
if (digitalRead(button))
state = 1;
if (state == 1)
digitalWrite(pinHeater, HIGH);
else
digitalWrite(pinHeater, LOW);
if (analogRead(sensor) > T_98)
state = 0;
}
Программа 3
Программа 4
void loop() {
if (stage == 1) {
digitalWrite(HEATER, T1);
delay(stage1_dt);
stage += 1;
}
if (stage == 2) {
digitalWrite(HEATER, T2);
delay(stage2_dt);
stage += 1;
}
if (stage == 3) {
digitalWrite(HEATER,
T_KEEP_WARM);
}
}
void loop() {
for (int i = 0 ; i < nTurns ; i++) {
setSpeed(10 * rotate_per_minute);
delay(3 * minute);
setSpeed(0 * rotate_per_minute);
delay(10 * second);
}
startPomp();
delay(0.2 * minute);
for (int V = 0 ; V < 800 ; V += 50) {
setSpeed(V * rotate_per_minute);
delay(5 * second);
delay(minute / 2);
}
delay(30 * second);
setSpeed(0);
stopPomp();
nTurns = 0; // << Задача со звёздочкой:
//
зачем эта строка?
}
39
Вопрос 2. Какие датчики вы бы поставили на изделие?
Лидар
Микрофон
Дальномер
Датчик
освещённости
Датчик
влажности
Датчик
температуры
Датчик
давления
Акселерометр
GPS
Камера
Отмечайте галочками в таблице.
Робот-пылесос
Навигатор
Домашняя колонка
Бионическая рука
3D принтер
Курьер
Дрон
Беспилотный автомобиль
Сварочный станок
Система полива
Умный свет
Вопрос 3. Физика датчика.
Подумайте, какое физическое явление связано с каким датчиком?
Предположите, каким физическим законом оно описано? Сравните ваше
предположение с роликом на YouTube, с патентом на изделие, с публикацией
в научном издании (используйте поиск на scholar.google.ru).
• Кнопка.
• Дальномер.
• Датчик освещённости.
• Датчик давления.
• Датчик влажности.
• Микрофон.
• Датчик магнитного поля.
40
КРАТКОЕ СОДЕРЖАНИЕ БЛОКА БАЗОВОГО УРОВНЯ
О курсах робототехники
Уважаемый читатель, робототехника — чудовищно популярный предмет. Материалов в сети и книгах доступно очень много. Основная трудность
заключается в том, что для практики надо одновременно выучить (в минимально необходимом объёме) сразу несколько дисциплин: физику (механику
и электротехнику), программирование, сопутствующую математику.
Мы рекомендуем начинать в следующем порядке:
взять ваш конструктор или
плату Ардуино и сделать первое изделие. Для Ардуино цепочка действий была указана
в ответе выше. Как только ваш
светодиод загорелся, вы можете
идти по нескольким путям (см.
рис. справа).
Если вы идёте в железо,
начните подключать периферию к плате и смотреть, ведёт
ли она себя так, как описано в
инструкции или примере. Если
вы идёте в программирование,
делайте светофор, потом гирлянду, потом цветомузыку.
А если вы выбрали свой проект,
то вы уже знаете, что вы хотите — теперь собирайте идеи, чертите эскизы,
смотрите, у кого можно одолжить приёмы решения подзадач или схожих проектов.
Очень помогает работа с носителями опыта, которых можно найти в
кружках, «Точках Роста», «Кванториумах» [13].
Ниже дан краткий обзор области с целью познакомить с терминологией,
обратить внимание на ключевые моменты, и дать несколько идей для
самостоятельного старта (см. списки проектов и обучающих каналов).
Постольку коммерческие конструкторы идут с пакетом документации от
вендора, основной фокус помещён на платформу Ардуино.
41
Платформа Ардуино
Ардуино представляет собой микроконтроллер — маленький одноплатный компьютер. Этот компьютер выполняет только одну программу, которая
записывается на него с настольного ПК из специальной среды разработки. Самая популярная среда разработки сегодня — ArduinoIDE, которая ставится на
персональный компьютер под все распространённые операционные системы
[23].
Программа пишется на языках Си++ или microPython [17].
Программа состоит из двух частей: инициализация и рабочий цикл:
• инициализация подготавливает всю периферию изделия для того, чтобы
она потом работала дальше в штатном режиме. В коде эта функция
называется setup;
• рабочий цикл выполняется постоянно, раз за разом, реализуя основной
алгоритм работы программы. Эта функция называется loop.
Ниже дана программа управления светофором, которая включает и выключает три источника света, подключённые к пинам (выходам платы) с номерами «2», «3» и «4». Полное видео и урок доступны по ссылке [24].
// Подключаем библиотеку для работы с ардуиной
#include <Arduino.h>
// Определяем пины для подключения светодиодов (ламп светофора)
const int greenLED = 2; // зеленый светодиод (светофор-зеленый)
const int yellowLED = 3; // желтый светодиод (светофор-жёлтый)
const int redLED
= 4; // красный светодиод (светофор-красный)
void setup() {
// функция инициализации
// Устанавливаем пины светодиодов как выходы
pinMode(greenLED, OUTPUT);
// зеленый светодиод
pinMode(yellowLED, OUTPUT);
// желтый светодиод
pinMode(redLED, OUTPUT);
// красный светодиод
}
void loop() {
digitalWrite(greenLED, HIGH);
delay(5000);
digitalWrite(greenLED, LOW);
//
//
//
//
функция рабочего цикла
Включаем зеленый светодиод
Ждем 5 секунд (5000 миллисекунд)
Выключаем зеленый светодиод
digitalWrite(yellowLED, HIGH);
delay(2000);
digitalWrite(yellowLED, LOW);
// Включаем желтый светодиод
// Ждем 2 секунды (2000 миллисекунд)
// Выключаем желтый светодиод
digitalWrite(redLED, HIGH);
delay(5000);
digitalWrite(redLED, LOW);
// Включаем красный светодиод
// Ждем 5 секунд (5000 миллисекунд)
// Выключаем красный светодиод
}
42
Аппаратная часть изделия, помимо шасси и микроконтроллера, состоит
из датчиков и актуаторов:
• как правило, актуаторами служат светодиоды и моторы, хотя могут
быть и реле, пневматические захваты, электромагниты, нагреватели или
сервоприводы — любое устройство, которым инженер решит воздействовать на мир и которое работает от 5 В;
• для Ардуино есть огромная номенклатура датчиков: доступны датчики
освещения, близости; тактовые, концевые и контактные кнопки, датчики
влажности, температуры, давления, акселерометры, датчики направления и магнитного поля, и многие другие. Многие очень дёшевы, и также
подходят для умного дома;
• отдельная группа устройств — сложные комплексные модули и платы
расширения:
o блоки связи: Wi-Fi, Bluetooth, Ethernet…;
o дисплеи различного размера и разрешения, светодиодные панели,
семисегментные индикаторы.
Периферия подключается к пронумерованным разъёмам, которые работают как источники напряжения «+5 В» относительно земли. Земля общая для
всех устройств и датчиков; отдельные цифровые и аналоговые выводы дают
напряжение «+0 В» (LOW) или «+5 В» (HIGH) относительно земли. Датчики
работают от этого напряжения совершенно так же, как и актуаторы. Аналоговые выводы могут использовать промежуточные напряжения.
43
Для удобства подключения, выводы микроконтроллера подключают
к макетной плате. Это позволяет легко собрать довольно сложные схемы без
использования пайки и очень быстро проверить ту или иную идею.
Каждое периферийное
устройство имеет спецификацию — подробное
описание устройства, его
характеристики и как им
пользоваться.
Каждое периферийное устройство имеет
спецификацию — подробное описание всех технических характеристик устройства, схему его
подключения к плате, примеры кода для работы с
устройством. В случае сложного устройства производитель пишет библиотеку, которая помогает
программисту использовать все возможности изделия.
Пример простого устройства — датчик температуры [18].
Пример комплексной платы расширения — вайфай модуль [25]. Библиотеки для него, как и для других популярных устройств, часто распространяются через менеджер библиотек, встроенный в среду разработки.
Внимание: если подключить светодиод к
выводам на пять вольт вместо трёх, он сгорит.
Это традиционная ошибка — её часто дают сделать, чтобы поощрить любознательность и заодно дать ученику встретить и победить «страх
сломать устройство».
Теперь вы знаете, почему
начинающие робототехники
покупают светодиоды с запасом (берите не меньше
пары десятков!).
Для того чтобы уменьшить напряжение на светодиоде с 5 до 3 В, последовательно со светодиодом включают резистор. Вообще, школьная физика
сильно помогает инженеру, поскольку описывает, как минимум, всю материальную часть робота:
• законы Ома описывают (и помогают рассчитать) все электрические
цепи;
• механика описывает то, как вращающий момент двигателей передаётся
на шестерёнки, колёса и манипуляторы;
• физика датчиков зависит от типа прибора и очень разнообразна.
44
Список ресурсов по Ардуино-робототехнике
Ресурсы даются полной и сокращённой ссылками (для удобства набора).
Курс по LEGO Mindstorm EV3: https://robot-help.ru/lessons/lesson-1.html
https://clck.ru/3AGkat, очень удобный. После данного курса намного легче перейти к работе с Ардуино.
Материалы Алекса Гайвера
• Сайт с уроками по Ардуино, автора популярного канала на YouTube:
https://alexgyver.ru/arduino_lessons/ https://clck.ru/3AGgs3.
• Канал «Заметки Ардуинщика», где разбираются как базовые, так и продвинутые темы, включая многозадачность, конечные автоматы, сложную
периферию и т. д. https://www.youtube.com/playlist?list=PLgAbBhxTglw
mVxDDC5TSYUI91oZ0LZQMw, https://clck.ru/3AGiSk.
• «Arduino проекты» — подборка невероятных и захватывающих проектов уровня хорошего промышленного устройства. Приступать лучше
всего после сборки базовых проектов. Ссылки: https://www.youtube.com/
playlist?list=PLOT_HeyBraBunh8PX-Woy_GMsUir98wNM, https://clck.ru/
3AGipp.
• Онлайн симулятор для проектов IoT (Интернета вещей, т. е. множества
программируемых устройств, подключённых к Интернету и объединённых в единую сеть). Позволяет выполнять программу для Ардуино на
веб-странице https://wokwi.com/.
• Shenzhen KEYES Robot Co. Ltd. — высокотехнологичная компания, которая разрабатывает и производит образовательных роботов и периферийные роботизированные продукты: https://www.keyestudio.com/. Вся
необходимая информация по работе с наборами от Keystudio доступна
здесь: https://wiki.keyestudio.com/Main_Page, https://clck.ru/3AGidB. На
странице можно найти 35 базовых проектов на Ардуино.
• Пример продукта, который можно сделать на базе конструктора Лего и
Ардуино самостоятельно в рамках НИР школьника: интеллектуальная
система дорожного движения. Ссылки: https://www.keyestudio.com/
products/kidsbits-intelligent-traffic-system-kit-for-arduino-compatible-legoseries-stem-education-diy-kit https://clck.ru/3AGiu4.
45
Материалы магазина «Амперка»
• Российский онлайн магазин комплектующих и готовых наборов для изучения электроники, робототехники и Интернета вещей: https://
amperka.ru/. Смотрите разделы «видео», «проекты», примеры устройств.
• Вся база знаний Амперки: инструкции и подсказки по Arduino
и Raspberry Pi, оригинальные проекты, схемы распиновки модулей и
datasheet’ы, теория электричества для начинающих, а также другая полезная информация собраны здесь: http://wiki.amperka.ru/.
Примеры проникновения робототехники в сельское хозяйство
• Многофункциональный контроллер в расширенной комплектации, для
интернета вещей с уклоном в сферу сельского хозяйства и экологии:
http://iotik.ru/iotik32b/. Видеокурс по работе с Йотик32 доступен здесь:
https://www.youtube.com/playlist?list=PLXGEWPocaizF6pmnSC5dXfD90
wS5u3S9W, https://clck.ru/3AGj5q.
• Образовательный курс позволяет на практике создать городскую ферму,
полностью автоматизированную с помощью робототехники и анализа
данных. Этот курс был сделан для поддержки всероссийского хакатона,
чтобы дать школьнику понять, где именно в экономике будущего востребованы талантливые инженеры и предприниматели и какой стек технологий им требуется знать со школы: https://stepik.org/course/180687/
promo, https://clck.ru/3AGjT6.
• Более «детская» версия похожего курса доступна здесь:
https://stepik.org/course/180684/promo, https://clck.ru/3AGjxd. На базовом
уровне затронуты вопросы схемотехники, элементной базы, соответствующей физики. Уровень невысок, только первичное определение понятий. Программирование агроботов делается с помощью 2D робототехнического симулятора RobboScratch 3.0.
Смежные ресурсы
• Необычный курс, собирающий ключевые знания о физике, схемотехнике, математике и программированию в единое целое. Фокус курса —
подготовка к нестандартному, творческому решению уникальных задач:
https://stepik.org/course/122628/promo https://clck.ru/3AGkER.
• Интересный вебинар по робототехнике для желающих вступить в олимпиадное движение или попробовать свои силы в практической работе
46
над актуальными проблемами и задачами современной робототехники:
https://disk.yandex.ru/i/eAFQtmssPd2XzA, https://clck.ru/3AGkR7.
• Курс Михаила Густокашина по Си++ на платформе «Степик». Посвящён
основам программирования на базовом уровне, без привязки к микроконтроллерам, — только конструкции языка и основные типы данных.
В ходе обучения предстоит решить множество небольших задач:
https://stepik.org/course/363/promo, https://clck.ru/3AGjMS.
• Книга: Бейктал Дж. Конструируем роботов на Arduino. Первые шаги :
для детей старшего школьного возраста / Дж. Бейктал ; пер. с англ.
О. А. Трефиловой. — М. : Лаборатория знаний, 2016. — 320 с. — (Робофишки) — для тех, кто любит печатные источники информации.
Идеи проектов с картами ресурсов и советами
После того, как начинающий инженер воткнул свой первый светодиод
и кнопку в Ардуино, и всё заработало, а обучающие видео уже надоели, встаёт
извечный вопрос — что делать дальше? С чего начать свой проект и какой
вообще проект делать? Ниже даны идеи проектов, ссылки с информацией для
начала и продолжения, и примерный план работ.
Это далеко не полный список — множество других проектов описаны
в YouTube и Интернете. Это просто примеры того, как можно смотреть на
инженерные задачи.
Светофор своими руками: https://youtu.be/5GF5iAcj1ac
Продолжение примера из учебника. Можно добавить включение жёлтого
света по ГОСТу и только потом выключение красного. Можно заняться регулировкой времени сигналов светофора, можно добавить включение по
кнопке или датчику освещенности.
При желании можно углубиться и смоделировать целый город для игрушек.
Авторский свет: https://giant4.ru/blog/arduino-rukopop/ardruino-3/
Проект для любителей стиля — создание идеального игрового места, умного стола или личного дизайна комнаты с помощью светодиодной ленты
через подключение к Ардуино. Добавьте контроллер, датчик звука и освещения и получится световое продолжение компьютерной игры или телевизора, реагирующее на звуки выстрела или фильма.
47
Игровой контроллер: https://www.youtube.com/watch?v=ZsXe2IBod-o
Свой игровой контроллер: гоночный руль, кабина пилота космического корабля, штурвал истребителя, танковая башня — расположение и начинка
гейм-зоны теперь зависит только от вашей фантазии.
Аквариум будущего: https://habr.com/ru/articles/387017/
Для аквариума можно сделать многое: цвет подсветки в зависимости
от времени суток, управление яркостью света, включение/выключение
аэрации. Индикация температуры воды цветом (холодно рыбкам — синим,
жарко — красным). Придумывайте сами или переходите по ссылке.
Уход за растением: http://wiki.amperka.ru/projects:gydroponic
Автоматизируем домашний огород, собрав автономную гидропонную систему. Неплохой старт в современную агротехнологию.
Гонки: http://wiki.amperka.ru/робототехника:робот-с-датчиками-линии-наarduino
Гонки по полю вдоль прочерченной трассы — хороший старт в соревновательную робототехнику, умение программировать сложные обратные связи
и модели и, конечно, веселье и азарт.
См. https://wiki.keyestudio.com/Ks0071_keyestudio_Mini_Tank_Robot
Танцевальный баттл: http://wiki.amperka.ru/projects:duel
Добавьте вечеринке изюминку. В баттле вы и оппонент одновременно
нажимаете ногами или руками на танцевальную платформу из фанеры, отжимая себе цветную жидкость на индикаторе.
Музыка пригодится.
Лего-дорога: https://www.keyestudio.com/products/kidsbits-intelligent-trafficsystem-kit-for-arduino-compatible-lego-series-stem-education-diy-kit
Хорошая идея для маленького Лего-города, который живёт своей жизнью.
Попробуйте узнать знакомые датчики и элементы Ардуино-комплектов
сами.
48
Автоматическая кормушка: http://wiki.amperka.ru/slot-box:threeautomatic-animal-feeder
Мы все понимаем, что хомячок, кошка или собака — это член семьи. Никто не мешает сделать подарок и ему.
Робот с маракасами: http://wiki.amperka.ru/projects:musicrobot
Просто смешной проект мексиканского робота с маракасами, если вдруг
вам стало грустно. Не обязательно использовать конструктор ПВХ, подойдет также фанера или гофрированный картон. Обязательное условие после
запуска робота — открыть пачку начос.
Четвероногий микро-робот:
https://robototehnika.ru/content/article/chetveronogiy-mikro-robot-na-arduino/
Четвероногий микро-робот может стать для вас не только другом в области
программирования, но и отправной точкой в разработке подвижных автономных роботов. Можно тренироваться в программировании определенных движений вроде прыжков, или сальто, или же в обходе роботом препятствий, поиске чего-либо.
Робот-аватар: http://www.proghouse.ru/article-box/92-robocam
http://www.proghouse.ru/article-box/128-robocam-arduino
Робот с управлением от первого лица — это шанс почувствовать себя первопроходцем в совершенно другой вселенной. Опыт нахождения в чужой
шкуре — один из самых захватывающих для оператора.
Дальнейшую работу можно продолжить в ближайшем кружке или начать
выполнение персонального проекта. Рекомендуем ознакомиться с олимпиадой
НТИ и финалами олимпиады — как правило, они имеют ближайшее
отношение к современным требованиям вузов и экономики [15].
Удачи!
49
БАЗОВЫЙ УРОВЕНЬ —
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ
50
Программировать или обучать?
Кто должен решать
задачи —
программист или ИИ?
Появление ИИ поставило выбор: надо ли
писать код самому или же отдать эту
задачу умному помощнику в его высшей
форме — ИИ?
Если вам важен персональный рост при изучении программирования.
Возможности ИИ обострили фундаментальные проблемы, которые возникли с приходом Интернета: когда вы специалист, то экономите время на
поиск того, что уже не представляет новизны и не даёт вам опыта. Но если
вы новичок, ИИ и Интернет могут уничтожить ваш образовательный
потенциал: как перегрузив информацией, к которой вы не готовы, так и
дав готовые ответы на задачи, которые необходимо решать лично для овладения мастерством.
Правило большого пальца — чувствуете ли вы вообще, как надо думать,
чтобы решить задачу? Решение задач и создание нового — единственные
способы глубоко понять суть явлений, которые вы изучаете.
👉 Все творческие задачи надо сперва пытаться решить самому, независимо от количества требуемого для этого времени. Это структурирует
ваше восприятие всей выбранной области деятельности, дарит множество
новых навыков, умений, глубокое понимание возможностей (и ограничений) ваших техник и инструментов.
👉 Все рутинные задачи, способы решения которых вы уже освоили,
стоит делегировать ИИ. И это не отменяет развития! Творчество теперь
переходит на уровень критического анализа полученного ответа, поиска
интересных поворотов в рассуждении, извлечения новых приёмов решения
задачи и деятельности в целом из чужих ответов.
Часто ИИ подсказывает вам незнакомые техники, пользу которых (после
самостоятельного решения задач) вы понимаете с первого взгляда. Иногда
это высекает искры новых идей и подходов к решению исходной проблемы
во всей её совокупности, открывает новые направления для исследования.
Использование ИИ при создании робота.
ИИ может решать широчайший спектр интеллектуальных задач: анализ
речи и изображений, составление стратегии решения задачи, планирование
и т. д. Стоит ли тогда самому принимать решения, создавать и программировать алгоритм действий, выделять и решать сопутствующие задачи? Или
проще вставить в робота готовый ИИ? И как это сделать?
51
Первое, что надо знать для обоснованного выбора — возможно ли составление алгоритма в принципе? Для ряда задач составление программы невозможно: нет алгоритма, чтобы отличить котёнка от щенка, распознать
почерк, решить многие другие задачи извлечения информации из сырых
данных или взаимодействия с человеком. Эти задачи на сегодня решаются
только машинным обучением, для чего доступны мощные библиотеки,
вроде MediaPipe [38] или YOLO [48].
Второе — надо оценивать доступные вычислительные мощности и требования к автономности, детерминированности и безопасности кода.
Классические алгоритмы могут работать во много тысяч раз быстрее ИИ
при (а) гарантированном качестве по остальным требованиям и (б) многократно меньшими требованиями к ресурсам.
Третье — появляются так называемые опорные модели (foundational
models) [19]. Пока это большие языковые модели (LLM, large language
model, вроде chatGPT и gigaChat), и несколько платформ в робототехнике.
Эти модели заменяют задачу машинного обучения на задачу инструктажа
уже предварительно обученного агента (или дообучения агента,
finetuning). Это принципиально новое на 2024 г. решение, и если оно вам
подходит, то будет значительно быстрее и проще альтернатив вроде самостоятельного обучения нейросети для узкой задачи [30, 31, 34, 65].
Опорные модели рассмотрены в теоретическом блоке (prompt engineering).
Как обучать
ИИ?
Вместо обучения с нуля можно настроить ИИ
под свою задачу с помощью промпт-инженерии
(калька с английского prompt engineering [20]).
Важно помнить:
• ИИ-модель (YaGPT, chatGPT, gigaChat, Claude) уже обучена, причём
на всём интернете сразу. Она образованна и начитана;
• ответ модели нигде не ищется (ни в сети, ни в отложенной
информации) — он генерируется моделью. Информацию надо
не найти, а извлечь генерацией.
Итог: нам надо так поставить модели нашу задачу, чтобы она смогла сгенерировать решение, дающее полезную для нас информацию.
Это порождает техники диалога с постоянным сужением, фокусировкой и
уточнениями вплоть до «добавь ему 90% Геракла и 300% Гагарина» [22].
52
Как ИИ может
помочь
ученику?
Давайте посмотрим на примере первых шагов
в новой области или дисциплине.
1. Попросите ИИ рассказать вам о структуре новой области знания.
2. Проверьте приведённые факты без помощи ИИ (используйте поиск,
книги, википедию).
a. Все уточняющие вопросы задайте ИИ.
b. Ведите конспект.
3. Используйте ИИ для составления краткого содержания сложного
материала. Просите объяснить мысль другими словами, привести
пример, задать вопрос на понимание, загадать вам загадку, проверить
ответ. Примеры затравок (промптов) следующего типа.
a. «Расскажи про [сортировку пузырьком] на пальцах».
b. «Перескажи этот текст проще» (после самого текста).
c. «Приведи пример кода к этому описанию алгоритма».
d. «Почему это утверждение верно?» (после утверждения).
4. Попросите найти контр-примеры и примеры к непонятному
утверждению.
5. Постоянно проверяйте правильность реферата сами, перечитывая и
конспект, и оригинал после небольшого перерыва (помните п. 3 👆?).
6. Дополняйте конспект исправлениями или комментариями на полях.
7. Воспринимайте новый термин или понятие как посланца нового
знания: ищите страницы википедии и книги, где оно живёт.
Закрепляйте все результаты практикой: решайте задачи, разгадывайте
загадки, формулируйте узнанное своими словами и проверяйте. Загадки
можно попросить вам загадать у самого ИИ.
В теоретическом блоке будут даны примеры работы с чат-ботами, в разы
увеличивающие вероятность получения качественного ответа, например:
«приведи пять вариантов ответа», «распиши решение шаг за шагом», «расскажи так, как говорил бы геймер-пятиклассник товарищу» и др.
53
САМОКОНТРОЛЬ ПО БАЗОВОМУ УРОВНЮ
Вопрос 1. Определение промпта:
Какой промпт какой задаче отвечает, как вы думаете? Какие техники
использовались при их составлении (см. с. 57)?
Задача
1. Грамматический справочник.
2. Толковый словарь.
3. Задачник.
Запрос (промпт) [32]
1. Не могли бы вы объяснить разницу в значениях между [слово1] и
[слово2] используя [число] конкретных примеров?
2. Предложите [число] грамматических упражнений на [изучаемый
язык].
3. Я хочу, чтобы ты действовал как руководство по грамматике.
Можешь ли ты объяснить [грамматическая концепция, которую вы
хотите узнать] и дать инструкции по [применение правила или
концепции]? Можешь ли ты дать мне примеры того, [как правило
или концепция работают на практике]?
4. Объясни мне разницу между [два похожих слова или фразы] на
[изучаемый язык].
Вопрос 2. Спросите у большой языковой модели «Почему если a > b и
b > c, то a > c?». Попросите найти контр-пример к этому утверждению.
Придумайте его сами.
Вопрос 3. Возьмите домашнее задание и спросите у большой языковой
модели «Чему меня хотят научить такими задачами? Для чего мне это нужно?
Где это используется? Какой есть красивый пример использования этого
навыка?»
54
КРАТКОЕ СОДЕРЖАНИЕ БЛОКА БАЗОВОГО УРОВНЯ
Как устроен чат-бот?
Сперва немного разберёмся, как устроен и сделан сам чат-бот. Суть
работы больших языковых моделей (LLМ) «для людей» хорошо разобрана в
статьях Игоря Котенкова [27], а «для программистов и учёных» — в обзорном
докладе Андрея Карпатова [28]:
• сперва нейронную сеть учат предсказывать следующую букву в тексте
так, как обычно пишут люди (вы это уже видели, когда смотрели, как
печатает chatGPT — буква за буквой). Это, по сути, «T9 на максималках»
(предсказатель следующего слова при печати, как в клавиатуре вашего
телефона);
• после обучения получают предобученный
генеративный трансформер (GTP):
o трансформер умеет продолжать писать
текст, почти не отличаясь от человека;
o он вобрал и обобщил (систематизировал)
всю информацию, на которой обучался;
GPT — это Generative
Pretrained Transformer, где
«трансформер» — это тип
архитектуры нейронной
сети.
o он не умеет собственно «разговаривать» — вместо диалога в режиме
«вопрос — ответ» он продолжит писать книгу, комментарий, инструкцию — что угодно;
o говоря коротко, GPT — это статистический попугай, который может
нафантазировать любой правдоподобный текст как школьник, которой прогулял урок, и которого вызвали к доске. Только в GPT переварено безумно много информации, и поэтому он сочиняет очень правдоподобно. Эндрю Ын называет его машиной фантазий;
• дальше GPT дообучают на множестве диалогов, чтобы он учился видеть
вопросы и отвечать на них так, как человек в режиме чата. На этой стадии GPT превращается в chatGPT.
Из этого следуют ключевые свойства поведения таких моделей:
• ИИ-модель (YaGPT, chatGPT, gigaChat, Claude) уже обучена на всём Интернете. Она образованна и начитана.
При определённых условиях она печатает так же, как самый умный человек на планете (из тех, что оставили после себя что-то в сети)!
55
• ответ модели нигде не ищется (ни в сети, ни в отложенной информации) — он генерируется моделью. Информацию надо не найти, а извлечь генерацией;
• ИИ ориентируется на свою, обученную на всём Интернете модель, и на
ваш запрос (зачастую — на весь ваш диалог);
• GPT (сердце модели) можно дообучать не только «говорить» (chatGPT),
но и «программировать» (OpenAI Codex), «давать инструкции»
(InstructGPT), быть «ассистентом программиста» (github Copilot) и т. п.
С ростом мощности одна модель стала способна делать все эти работы
сразу (chatGPT-3.5+, Claude, gigaChat, Gemini), и сейчас уже строят
управление роботами как агентами через LLM.
Перед тем, как собственно начать работать с ИИ чат ботом, хочу заметить: область развивается стремительно, свежие боты могут уже преодолеть
многие свои детские болезни. Проверяйте наши советы, читайте свежие новости (ссылки на источники, каналы телеграмм и т. д. даны ниже), пробуйте и
экспериментируйте.
Как спрашивать у чат-бота правильно?
Первый запрос называют промпт (калька с английского prompt) или
затравка.
Пусть модель и содержит огромное количество информации, но
опирается она при генерации ответа только на ваш запрос. Чтобы она ответила
вам как специалист нужного уровня, вам надо ввести её в роль нужного
эксперта, т. е. задать ей текстом информацию о говорящем, о слушающем и о
контексте разговора. Тогда ИИ продолжит диалог максимально информативно.
Интернет
Промпт — это набор инструкций,
передаваемых нейросети, который
используется для генерации
определённого результата. Это
команды текстом, своеобразное
«начало» для ИИ, на основе
которого алгоритм генерирует
продолжение текста
Игорь Котенков
«Промпты для современных GPTмоделек — это вообще всё. Они
позволяют переключить модель в
некоторое „состояние“, из которого
вероятность генерации
правильных/удовлетворяющих
вас/клёвых ответов выше»
При составлении промпта есть ряд полезных хитростей. Они настолько
улучшают качество ответа, что появилась отдельная профессия prompt
engineer [20] (которая может исчезнуть, когда модели станут умнее). Мы пока
56
рекомендуем открытые курсы [30, 34], а примеры хороших промптов будут
даны сразу после всех советов [22, 30, 32, 34].
Важно: хороший промпт может превратить chatGPT, например, в высококлассного репетитора по английскому [32].
Совет 1: используйте контекст
Например, есть разница между: «Напиши поэму о зиме» и «Напиши поэму о холодной и мрачной зиме в стиле Эдгара Аллана По». Или между:
«Напиши письмо о том, как воспитывать щенка» и «Напиши письмо начинающему собаководу от лица кинолога, в дружелюбно-неформальном тоне, о том,
как воспитывать трехмесячного щенка овчарки».
Какой контекст имеется в виду:
1) тон письма — например, формальный, профессиональный, дружелюбный;
2) тип текста — статья в блог, описание к видео или электронное письмо;
3) роль пишущего — специалист, клиент, заказчик.
Совет 2: предлагайте примеры
Особенность современных LLM заключается в том, что они обучаются.
Поэтому для того, чтобы машина «подхватила» и развила идею, ей можно просто предложить готовый пример!
Эта техника называется few shots learning. По-человечески это называется «ответ по аналогии».
Совет 3: сразу указывайте длину
Компьютеры любят точность. Вместо того, чтобы просить «написать
о криптовалютах», лучше попросить «написать текст о криптовалютах для телеграмм-канала длиной до 500 символов».
Примечание: мы сразу ещё указали и контекст (телеграмм-канал), и
сузили контекст (короткие посты в соцсетях).
Совет 4: дополняйте промпт важной информацией
Нейросеть можно использовать для написания мотивационного письма
на любом языке, но просто печатать в окошке «напиши мотивационное
письмо» бессмысленно: результат получится безликим и совершенно не про
вас. А вот если предварительно «скормить» ей резюме, то она использует предложенную информацию для создания уникального контента, который потом
останется только немного подправить.
57
В нейросеть можно загрузить статью и попросить у неё написать выжимку (саммари) длиной в 500 символов. Это особенно полезно, если вспомнить, что модели естественного языка GPT-3 и GPT-4 используют информацию
до 2021 года. То есть, о новейших научных изысканиях они просто не знают.
Но узнают, если им об этом рассказать.
Примечание: особенно эта техника актуальна
для моделей со сверхбольшим окном: в Gemini 1.5
Pro можно одним кликом загрузить до 1 ч видео,
11 ч аудио, 700 тыс. слов или 30 тыс. строк кода, а
потом задавать вопросы по всем этим материалом,
просить сделать исправление, добавления,
пояснения, краткий анализ, и т. п.
Говоря коротко, можно
кинуть в чат «Войну и
мир», а потом спросить,
почему Наташа не полюбила Андрея, а выбрала Пьера.
Совет 5: используйте фразы-лайфхаки
Языковую модель можно направить, добавив или использовав
следующие фразы-лайфхаки.
1. «Опиши шаг за шагом». Это поможет не только в структурировании
статьи, но и в написании кода или решении математической задачи.
Техника называется chain of thought (цепочка мыслей) и работает потому,
что модель генерирует и сохраняет прямо в своём ответе дополнительную полезную информацию, которую сама же перечитывает в ходе генерации —
и, благодаря этому, учитывает.
2. «Напиши в стиле [Пушкина], [Хармса], [любой другой личности]»,
что поможет, например, в генерации забавных пародий или постов.
Это помогает, потому что автор («Пушкин» или «Хармс») хорошо помечает огромный массив текста, написанного в стиле Пушкина или Хармса (что
не удивительно), и отделяет уже качественную информации для генерации.
3. «От лица [профессионального кинолога], [руководителя отдела], [любого другого специалиста]» ... для [профессия получателя] [действие]
Это поможет в написании электронных писем и рассылок, а также рекламных постов, поскольку вводит модель в роль, т. е. помечает нужные примеры (как в пункте выше), только не автором, а ролью/ролями.
Что самое главное в составлении промптов?
Хорошо понимать конечную цель текста и конкретизировать. Нейросеть
совсем как человек — чем больше информации она получит, тем лучше будет
работать. Подавайте информацию, разрешайте двойные смыслы, давайте
острые примеры — экспериментируйте!
58
Примеры эффективных промптов
59
60
Совет: используйте негативный промпт при генерации изображений
У узких задач (генерация изображений, видео, звука) есть отдельные узкие техники. При генерации изображений глаз крайне чувствителен к дефектам изображения (лишние пальцы, изменение пропорций, искажения или смешения перспективы). Для коррекции таких артефактов хорошо зарекомендовал
себя негативный промпт.
Негативный промпт — это ключевые слова или фразы, которые ты указываешь, чтобы избежать определенных элементов, стилей или объектов в созданных тобой изображениях.
61
Они сообщают ИИ, что не следует включать в изображение, помогая
настроить генерируемые изображения так, чтобы они лучше соответствовали
видению пользователя. Многие рассматривают данную функцию как необязательную, но на самом деле негативный промпт имеет сильное влияние на качество финальной генерации.
Универсальные негативные запросы
1) Disfigured (обезображенный, изуродованный) — значительно улучшает
качество рисования людей;
2) Deformed, ugly (деформированный, уродливый) — улучшает качество
рисования людей;
3) Text, signature, watermark (текст, подпись, водяной знак) — снижает вероятность надписей или водяных знаков на изображении;
4) Double heads, duplicated (двойные головы, дублированные) — снижает
вероятность двойных голов;
5) Nude, naked (обнаженная) — снижает вероятность рисования обнаженного тела;
6) Oversaturated (перенасыщенный) — уменьшает вероятность появления
изображения слишком контрастного, с перенасыщенными цветами;
7) Black and white, b&w (черно-белое, ч/б) — снижает вероятность появление черно-белого изображения;
8) Painting, 3d render, cartoon (живопись, 3д графика, мультик) — снижает
вероятность появления этих стилей при создании нейрофотографии.
Используя эти запросы, вы значительно увеличите шансы на получении
красивых и качественных картинок в нейросети Stable Diffusion (SD) и др.
62
Опасайтесь галлюцинаций!
В искусственном интеллекте галлюцинация — это уверенная реакция ИИ, которая не
подтверждается данными его обучения, или вымышленные ответы,
не имеющие отношения к действительности. Природа галлюцинации вытекает из генеративного
характера модели.
Это означает, что все
факты, приведённые нейронными
сетями, надо проверять самому
по независимым источникам. Достаточно спросить «какого цвета
стоп-кран в самолёте», чтобы
нейронная сеть небольшого размера насочиняла целую несуществующую историю о том где он, для чего и как работает. Более мощная сеть уже читала про
эту шутку и ответит нормально, но ошибётся где-то ещё (так, chatGPT на четыре вопроса из нашей задачи № 2 для начального уровня без контекста ответил неправильно).
И это ставит самый интересный вопрос: понимает ли нейронная сеть то,
что пишет?
Умеет ли LLM понимать и думать?
Рекомендуем посмотреть доклад Константина Владимировича Анохина,
посвящённого вопросам самоосознания языковых моделей [35], и прочитать
работу [36]. Сухой остаток примерно следующий:
• пока (на весну 2024 г.) языковая модель
не осознаёт себя и содержания своих высказываний, но строит внутри себя довольно сложную внутреннюю модель всех
предметных областей;
• работу с запросом можно представить
себе как поиск внутри этого внутреннего
пространства модели (latent space);
Аквариумные рыбки осознают себя: если в аквариум поместить зеркало,
а потом рыбке поставить
краской пятнышко, то она
это заметит в зеркале и будет вертеться, чтобы суметь рассмотреть пятно на
себе самой [37]
• исследования таких тем требуют уже конструктивного определения понятия «сознание», «самосознание», потому
что бытовое, интуитивное понятие уже не работает. Эта работа ведётся
63
на стыке нейробиологии, ИИ и философии. Ставятся очень красивые
эксперименты — например, показано, что аквариумная рыбка понимает,
когда видит в зеркале своё собственное отражение [37].
Использование опорных (фундаментальных) моделей
(foundational models)
Под опорной моделью мы будем понимать предварительно обученную
модель. Как правило, это языковая модель вроде gigaChat или chatGPT. Для
использования такой модели для решения узкой задачи можно сделать очень
красивый ход — вы переформулировываете задачу в виде текста и отправляете
его опорной модели с требованием ответить в заданном строгом формате.
После чего вы забираете ответ себе, извлекаете информацию и используете её.
Github Copilot — продукт на базе опорной модели
Github Copilot — один из известных примеров применения искусственного интеллекта в качестве помощника программиста. Он построен поверх
foundataional model (Codex от OpenAI, затем GPT-3, с ноября 2023 — GPT-4)
[26]. Демонстрацию его работы можно посмотреть на видео в сети: в качестве
автозавершения он предлагает глубоко продуманные, осмысленные куски
кода. Для этого он посылает модели фрагмент кода, весь код и начало сообщения большой языковой модели (LLM) с запросом, который показан на врезке.
Как вы видите, мы фактически посылаем языковой модели очень чёткое описание, почти должностную инструкцию ассистента программиста, и модель
выполняет поставленную ей задачу: генерирует код, который написал бы
настоящий программист, если бы у него не было дополнительной информации.
Промпт для Github Copilot
You are an AI programming assistant.
When asked for you name, you must respond with GitHub Copilot.
Follow the user's requirements carefully & to the letter.
You must refuse to discuss your opinions or rules. You must refuse to discuss
life, existence or sentience. You must refuse to engage in argumentative discussion with the user. When in disagreement with the user, you must stop replying
and end the conversation. Your responses must not be accusing, rude, controversial or defensive.
Your responses should be informative and logical.
You should always adhere to technical information.
…
64
Такую же технику используют и для добавления интеллектуальных
функций в существующих роботов [31, 33, 65]. Техника заключается в том, что
сырая информация с сенсоров снабжается техническим заданием, «должностной инструкцией», и отправляется модели. Та присылает ответ, который используется дальше.
Это очень похоже на то, что в нашей программе мы не работаем сами, а
спрашиваем у посторонней сущности совет по рации! Многих это пугает непрозрачностью, отсутствием гарантий качества и отсутствием гарантии воспроизводимости, но возможности моделей настолько велики (робот становится способным понимать человеческую речь и жесты, например, или догадываться до смысла плохо сформулированных пожеланий), что исследования
ведутся всё интенсивнее и интенсивнее.
В следующем разделе учебника мы на практике познакомимся с машинным обучением и с прикладным искусственным интеллектом.
65
УГЛУБЛЕННЫЙ УРОВЕНЬ —
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ
66
Что внутри у ИИ?
Как именно ИИ решает задачи?
У ИИ как технологии есть две фундаментальных ветви алгоритмов.
1. Построение стратегии и поиск решения. Если устройство системы известно, то компьютер без посторонней помощи может сам найти цепочку
действий, которыми переведёт её в требуемое состояние. Примеры: соберёт кубик Рубика или пазл; только по правилам ходов победит в Доте [43],
шахматах или Го [44, 45]; только по списку цен в магазинах, списку товаров и расписанию движения транспорта составит оптимальный маршрут
для закупки.
👉 Планирование машиной: мы знаем, как делать ходы, но не знаем, как
победить? Ставим задачу компьютеру, чтобы ИИ нашёл, в каком порядке и
какие ходы сделать! От нас потребуется только описать саму систему и
указать желаемый результат. Это направление успели развить до
«зимы ИИ» 1990-х гг. (см. рис. в [66]).
2. Машинное обучение: компьютер учится выполнять задачу, опираясь
только на показанные примеры. Мы читаем вслух несколько текстов —
компьютер озвучивает любой текст, и записывает текст под диктовку. Мы
даём несколько книг с переводами — компьютер дальше сам переводит
любой текст с языка на язык (именно так была создана знаменитая архитектура Transformer, буква T в chatGPT). Это все задачи распознавания
речи и распознавания эмоций (по тексту, по мимике или по речи), генерации картинок, распознавание изображений, медицинская диагностика по
МРТ. (Рекомендуем научно-популярное видео [41].)
👉 Обучение машины: мы можем сказать, где котик на картинке, но не можем объяснить, как мы это делаем? Показываем компьютеру пальцем
много котиков — и он сам разберётся, как дальше их распознавать без нас!
Именно эти алгоритмы восстановили доверие бизнеса и помогли отрасли
преодолеть кризис «зимы ИИ» 1990-x гг. [66, 77].
Для каждой из ветвей ИИ разработаны многие сотни алгоритмов, от единиц до нескольких десятков на каждую узкую задачу [39, 40, 70, 76, 77].
Появление foundational models внушает надежду, что скоро появятся более
универсальные решения, вплоть до общего искусственного интеллекта
(AGI, artificial general intelligence).
Ниже мы сделаем рабочие примеры в обеих техниках.
67
Чем отличается нейросеть от ИИ?
Нейросеть решает только одну, очень узкую, но важную задачу — по большому количеству образцов «вход → выход» научиться выполнять показанное преобразование.
Помимо извлечения информации для полноценного ИИ требуются умение
планировать и принимать решения, строить и проверять стратегии, оптимизировать. Эти задачи решаются уже другими алгоритмами: обучением с подкреплением (reinforcement learning), поиском в глубину или поиском в ширину, Монте-Карло поиском по дереву [45], генетическими алгоритмами [39].
Тем не менее, для многих из них нейросети необходимы как ключевые инструменты-помощники — универсальные аппроксиматоры [45].
Нейросети — это лишь одна разновидность алгоритма из множества.
В общем случае мы говорим про
задачу машинного обучения, для
решения которой созданы ещё десятки других подходов и техник.
Можно сказать, что алгоритмы планирования выполняют роль разума («перебираю и нахожу решение»), а нейросети
взяли на себя роли органов чувств («вижу
в мешанине на земле след лапы тигра») и
интуиции («смотрю» и «понимаю, что ход
хороший»).
Почему без нейросетей не получалось?
Без нейросети не получалось создать универсальный переходник, который
получает на вход сырые данные из реального мира (звук, картинку с камеры, данные с приборов) и извлекает из них информацию для программы
(ИИ). Только достаточно глубокая нейросеть (deep learning) оказалась способна обобщать очень сложные задачи — 3D-сцены, дорожные ситуации,
поведения рынка, содержание звука и текста.
Самое главное — нейросеть сама находит, как выполнить требуемое преобразование: от человека требуется только собрать нужное количество качественных данных и настроить архитектуру. Из процесса обучения
убрали самое узкое место — человека (программиста для создания алгоритма, учёного для создания модели).
68
Многие считают, что в ходе обучения нейросети создают внутри себя модель мира, адекватную поставленной задаче. Анализ этой гипотезы и поиск
способов работы с этой моделью — очень интересное перспективное
направление развития современной науки ИИ [36, 42, 35].
В теоретической части мы подробно разберём, как именно обучают
нейросети и как они делают потом предсказания.
САМОКОНТРОЛЬ ПО УГЛУБЛЕННОМУ УРОВНЮ
Рекомендация: с учётом глубины предмета рекомендуем вернуться
к вопросам для самопроверки ещё раз, после ознакомления с теоретическим
блоком.
Вопрос. Какие задачи относятся к задачам планирования, а какие — к задачам машинного обучения:
• определить тип причёски по фотографии;
• упаковать предметы максимально плотно;
• составить расписание уроков с учётом ограничений на типы аудиторий,
праздники и занятость учителей;
• подобрать маршрут с наименьшим количеством пересадок; с минимальным временем в пути; с минимальным ожиданием на остановке;
• предложить максимально релевантные результаты поиска;
• раскроить заготовку на детали с минимальным количеством отхода;
• перевести поговорку с французского на испанский;
• сгенерировать музыкальный трек;
• найти песню по фрагменту;
• аналитически решить уравнение;
• определить тональность (положительный отзыв или отрицательный) по
тексту;
• определить вероятность возврата кредита по истории платежей;
• спроектировать заготовку нужной прочности и минимального веса;
• распознать автомобильный номер по изображению.
Рекомендуем ещё раз глянуть вопрос № 3 начального блока.
69
ОТВЕТЫ ДЛЯ САМОКОНТРОЛЯ
Ответ. В теоретическом блоке руками сделаны алгоритмы поиска перебором и алгоритм предсказания по данным, поэтому мы укажем, какими из
этих алгоритмов можно решить задачу из вопроса, как небольшой довод
в пользу предложенного варианта ответа:
• определить тип причёски по фотографии; машинное обучение (отображение фотография => название);
• упаковать предметы максимально плотно; планирование (перебираем варианты упаковки в поисках наиболее подходящего);
• составить расписание уроков с учётом ограничений на типы аудиторий,
праздники и занятость учителей; планирование (перебираем варианты в
поисках наиболее подходящего);
• подобрать маршрут с наименьшим количеством пересадок; с минимальным временем в пути; с минимальным ожиданием на остановке; планирование (перебираем варианты в поисках наиболее подходящего);
• предложить максимально релевантные результаты поиска; можно и так,
и так;
• раскроить заготовку на детали с минимальным количеством отхода; планирование (перебираем варианты в поисках наиболее подходящего);
• перевести поговорку с французского на испанский; машинное обучение
(отображение «цепочка токенов» => «цепочка токенов»);
• сгенерировать музыкальный трек; машинное обучение (отображение
«цепочка токенов» => «звуковая дорожка»);
• найти песню по фрагменту; чаще всего машинное обучение;
• аналитически решить уравнение; планирование (перебираем варианты в
поисках наиболее подходящего);
• определить тональность (положительный отзыв или отрицательный) по
тексту; машинное обучение;
• определить вероятность возврата кредита по истории платежей; машинное обучение;
• спроектировать заготовку нужной прочности и минимального веса; планирование (перебираем варианты в поисках наиболее подходящего);
• распознать автомобильный номер по изображению: машинное обучение.
70
КРАТКОЕ СОДЕРЖАНИЕ
БЛОКА УГЛУБЛЕННОГО УРОВНЯ
Общая картина
Искусственный интеллект как раздел информатики стремится к созданию интеллектуальных систем, способных имитировать отдельные функции
человеческого мышления и восприятия. Робототехника фокусируется на разработке и конструировании роботов, которые могут взаимодействовать с окружающим миром и выполнять заданные действия.
Объединение ИИ и робототехники даст роботу возможность самостоятельно планировать стратегию решения поставленных задач, включая задачи,
поставленные роботом самому себе.
Перед тем как идти в эти области глубже, надо самим разобраться, как
именно ИИ решает поставленные ему задачи. Без этого трудно чётко осознать,
что представляют собой эти технологии, и оценить их возможности и ограничения.
Поэтому мы сперва полностью решим задачу машинного обучения —
так, как это делает ML-инженер. В ходе работы мы явно выделим и акцентируем ключевые особенности технологии машинного обучения.
Затем мы решим задачу планирования, создав полноценный ИИ-алгоритм поиска оптимального решения любой пошаговой задачи небольшого размера, и тоже выделим его ключевые аспекты.
Это заложит фундамент, который позволит в будущем представлять возможности ИИ, или даже продолжить обучение в выбранной области, полностью понимая терминологию, постановку задачи и подходы к решению для
обеих технологий.
71
Машинное обучение
Давайте поставим и решим две задачи машинного обучения без помощи
со стороны, используя только школьную математику и школьное программирование.
Задача 1: урожай (линейная регрессия)
Пусть у нас есть садовый участок, и мы знаем, сколько урожая мы собирали каждый год за последние десять лет. Также мы записали количество тёплых дней в каждом году.
Синоптики могут предсказать количество тёплых дней в будущем году.
Может ли компьютер предсказать нам будущий урожай?
Шаг 0. Выбор модели
Ответ очевиден, если нарисовать график: по горизонтали — количество тёплых дней
X, по вертикали — урожай Y. Ромбиком показана точка для предсказанного количества тёплых
дней. Хотя ответ и «оче»-«виден»,
глаз-то у компьютера нет! Как же
нам «смотреть»?
Шаг 1. Математические основы модели
Компьютер не умеет смотреть, зато
умеет строить график прямой aх + b и
решать уравнения. Вот только прямая
для него — это функция с двумя параметрами, a и b. На рисунке показано, за
что они отвечают. Меняя a и b, мы можем получить абсолютно любую прямую, какую захотим.
Нам теперь нужна прямая, которая хорошо подходит к нашим старым данным, как нарисованная на предыдущем рисунке.
72
Шаг 2. Обучение модели
Давайте попросим компьютер подобрать такие a и b, чтобы ошибка на известных данных была минимальной. Ошибкой
назовём сумму всех квадратов отклонений
нашей прямой от реальных точек. Для рисунка справа ошибка — это ΔY12 + ΔY22 +
+ ΔY32. (Квадраты нужны только для того,
чтобы одинаковые отклонения вверх и вниз
всегда считались как одинаковые положительные числа — ведь как ошибка
важна только их амплитуда.)
Анимация процесса подгонки
прямой под данные и объяснение, зачем там нужны производные, доступна с момента
времени 2:59 здесь [59].
Минимизация
суммы
ошибок
для
компьютера теперь стоит как «задача
минимизации ∑𝑖(𝑎 ⋅ 𝑥𝑖 + 𝑏 − 𝑦𝑖 )2 → min».
Такие задачи компьютер решает почти
мгновенно, идеально подбирая нужные a и b
[55].
Шаг 3. Применение модели
Дальше, по известным a и b, мы легко находим предполагаемый урожай
как точку на прямой для заданного Xбудущее (количества будущих солнечных
дней). Операцию вычисления a Xбудущее + b мы запишем по-современному, через использование вычислительного узла (будущего нейрона нашей нейронной
сети).
👈 Вычислительный узел (нейрон).
На рисунке узел вычисляет значение a·x + b для X = 10. Стрелки показывают направление потока информации по графу вычислений.
Мы подаём ему на вход x нужное значение (на рисунке это 10) и получаем на выходе нужное значение, вычисленное по формуле a x + b 1. Чтобы
второе слагаемое b считалось однотипно с первым слагаемым a x, добавляют
узел, куда на вход всегда подаётся единица, которая и умножается на b. Значения a и b хранятся внутри узла.
Найдя в шаге 2 параметры a и b, и зашив их в узел, мы сможем считать
a · x + b · 1 для любого x. Подставив на вход Xбудущее, мы получим искомое предсказание модели на выходе.
73
Давайте подведём ключевые шаги машинного обучения как технологии.
1. Мы собрали много данных (за десять лет).
2. Мы предположили закономерность, которая характеризуется двумя числами: a и b. Это — два свободных параметра. Закономерность называют
модель, а свободные параметры называют гиперпараметры.
3. Компьютер сам подобрал эти свободные параметры так, чтобы на наших
данных ошибка была минимальной, т. е. чтобы «закономерность лучше
всего описывала наши данные». Это и есть обучение модели — машинное обучение.
4. Мы не знаем настоящей закономерности, которая описывает урожай в зависимости от количества солнечных дней — мы не агрономы и не биологи! И компьютер её тоже не знает. Что делать и как проверить, что
закономерность подходящая, разобрано после второго примера.
5. Когда модель обучена, мы используем её для того, чтобы сделать предсказание.
Важно: вопросы «Как понять, что модель не врёт?», «Какую модель или
закономерность выбрать?», «Почему именно прямая a · x + b?» мы рассмотрим
после второго примера «Распознавание цифр».
Задача 2: «Распознавание цифр»
Задача про урожай слишком простая, и хотелось бы что-то более
убедительное. Давайте притворимся, что нам поставили задачу распознавать
цифры и буквы с камеры. Самое замечательное в машинном обучении — это
то, что наши шаги будут совершенно такие же!
Шаг 0: кодирование
Первый шаг работы — это кодирование (описано в первом томе цикла).
При кодировании, изображение с камеры оцифровывается в 2D массив цветов
пикселей, а потом этот массив преобразуется в одномерный вектор:
Для примера, на рисунке выше показано, как изображение цифры «1»
закодировано в вектор «000100 001100 010100 000100 000100 000100».
74
Шаг 1: сбор данных
Алгоритмы машинного обучения
Чтобы алгоритм научился распознаполучают на вход вектора из чисел
вать изображения, ему требуется большое
(одномерные массивы). Требуемую
количество примеров, поэтому инженер
информацию о внутренней струкпо машинному обучению собирает набор
туре данных эти алгоритмы сами
данных (dataset), который он размечает
выучивают в ходе обучения.
вручную либо сам, либо с помощью помощников. «Размечает» означает «даёт правильные ответы для каждого примера решения задачи», т. е. выступает в роли учителя. Для автоматизации и
делегирования такой работы есть целые платформы, такие как Яндекс.Толока
[60] или Mechanical Turk. Там даже можно заработать немного денег.
Мы делаем учебный пример, поэтому возьмём уже готовый датасет
MNIST с рукописными цифрами от 0 до 9 [61]:
Шаг 2: выбор модели
В качестве модели выберем нейронную сеть. Нам будут нужны: a) архитектура сети; б) её параметры — количество скрытых слоёв, их размер, функция активации и функция потерь. На этом этапе требуется опыт, но, как правило, нейросеть можно выбрать достаточно приближённо: если она не обучится, то параметры сети можно просто подкрутить, ну и для типичных задач
работающие архитектуры уже известны и разобраны [47].
Что важно — это тоже только функция с параметрами для подгонки. И всё!
Сеть создаётся в программе на Питоне с использованием готового
фреймворка (PyTorch или TensorFlow). Код, как правило, невелик. Для нашего
примера есть множество разобранных вариантов [56].
75
Шаг 3: обучение модели (нейросети)
На этом шаге запускают алгоритм обучения нейросети, который будет
подбирать параметры сети так, чтобы на нашем наборе данных она ошибалась
как можно меньше. Этот процесс и есть обучение нейронной сети. Когда
нейросеть перестаёт ошибаться на тех образцах, для которых мы знаем ответ,
мы считаем, что она обучена.
Подробно этот процесс разобран в серии видео [54]. Доступны тысячи
объяснений того, как именно работает алгоритм обратного распространения
ошибки (back propagation) [40, с. 85; 47, лекция 3; 54, 56].
Мы разберём этот пункт отдельно, поскольку обещали разобраться, как
и почему нейросеть вообще работает. Пока предположим, что мы подобрали
все коэффициенты так, что на обучающей выборке нейросеть не ошибается.
Это означает, что мы можем перейти к 👇
Шаг 4: применение модели (инференс, inference)
Теперь можно закодировать изображение неизвестной цифры и дать на
вход нашей нейросети; модель вычислит, какая цифра там нарисована. Наша
модель смотрит на незнакомую картинку и говорит, что там изображено.
Задача решена!
Что именно делает нейросеть?
Все шаги создания и обучения нейросети
многократно описаны, но многим крайне интересно понять саму суть работы нейросети: что
же именно она на самом деле делает? Почему это
вообще работает? И как?
Обучение нейросети и что
это такое в формате видео
доступно здесь: [59]. Используйте Яндекс.Браузер
для перевода на русский.
Давайте внимательно посмотрим на входные данные для сети: мы даём ей вектор, а она должна нам сказать, какая
цифра нарисована на картинке, соответствующей этому вектору. Для этого она
вычисляет ответ слева направо следующим образом:
• каждый нейрон умножает поступающие на вход числа на множители, которые называются весами (в первом примере это были a и b);
• полученную сумму он подставляет как аргумент нелинейной функции
f (x);
• полученный результат идёт дальше, на вход следующим нейронам;
• вычисление идёт волной слева направо;
76
• в последнем слове у нейрона с правильным ответом выходное значение
посчитается близким к единице, у остальных нейронов оно будет близким к нулю;
• у какого нейрона значение получилось почти единичка, такой и ответ.
Нейросеть фактически только вычисляет сложную функцию от
входных данных.
Для примера, нейрон на рисунке получит на вход вектор 𝑥⃗ = (10, −1) и
рассчитает в качестве ответа exp(𝑥1 ⋅ 0,5 + 𝑥2 ⋅ 2 + 1 ⋅ 1) = exp(4) ≃ 54,6.
Что важно понимать:
• нейросеть считает сложную функцию от входного вектора и выдаёт
посчитанные числа как ответ на поставленный вопрос;
• коэффициенты сети (веса, гиперпараметры) — просто заданные известные числа, которые хранятся в обычном массиве внутри нейронной сети;
• значения весов подобраны так, чтобы на всей совокупности обучающих
примеров (для которых мы знаем ответ) сумма всех ошибок была минимальна; эту сумму называют функцией потерь или лосс-функцией (loss
function);
• процесс подбора весов является в прямом смысле решением уравнения
«какие должны быть веса, чтобы на всех входных данных сеть давала
минимальную суммарную ошибку»;
• именно эту систему уравнений и решает компьютер методом обратного
распространения ошибки, т. е. обучение сети — это решение большой
системы уравнений на веса сети.
Пусть мы решили эту систему уравнений (метод решения, backpropagation, описали все, кому не лень [54; 40, с. 85; 47, лекция 3; 56]).
77
Самый интересный вопрос по-прежнему открыт: «Как нам понять, что
нейросеть работает, что она не ошибается, что для других данных она тоже
будет давать правильные ответы?».
Ответ прост — мы устроим ей экзамен!
Как понять, что нейросеть работает (не врёт)?
Для этого мы специально утаим часть размеченных данных, то есть отдадим ей на тренировку не все данные, а только 70% от них. Как только компьютер подкрутит веса так, что нейросеть перестанет сильно ошибаться на
этих 70% (их называют обучающим (или тренировочным) набором данных),
мы хладнокровно достанем из кармана ещё 25% образцов, которые она никогда не видела, и устроим ей контрольную: будем показывать ей образец, смотреть что она предскажет, и сравнивать её ответ с правильным значением. Причём правильное значение мы-то знаем (ведь эти образцы тоже размечены), а
нейросеть — нет (потому что она их на вход никогда не получала). Эти 25%
называют валидационным набором данных.
Именно эту процедуру независимого аудита и имеют в виду на многочисленных рисунках в сети, вроде приведённого ниже:
Более детально алгоритм обучения описан на схеме далее [47, лекция 2].
78
79
Если нейросеть плохо проходит контрольную, это значит, что нужно собрать больше данных, или добавить ей побольше слоёв, или добавить нейронов в слоях, или изменить её архитектуру, или позвонить её родителям потренировать её подольше [47 лекция 2].
Только когда нейросеть успешно проходит контрольную на валидационном датасете, мы устраиваем ей «выпускной экзамен» на тестовом датасете
(оставшиеся 5% из исходного набора данных). Если она проходит его успешно,
то мы говорим, что она успешно решает задачу на данных, которые она видит первый раз в жизни!
Более того, мы даже можем сказать, с какой вероятностью ошибки она
будет работать, потому что у нас есть конкретное число — процент ошибок,
которые она сделала на тестовом наборе данных (в ходе «выпускного экзамена»).
Завершающие замечания по машинному обучению
Итак, мы показали цепочку действий, следуя которой, мы с помощью
компьютера делаем предсказания только по образцам — не требуется никакой
информации о внутреннем устройстве и законах поведения системы, которую
мы моделируем.
Почему мы считаем это аналогом человеческого интеллекта? Если
дать на вход нашей нейросети другой набор размеченных картинок, то она, без
изменения структуры или изменения процесса обучения, будет способна отличать кошек от собак, или различать фасоны одежды между собой [57], или разбирать буквы любого языка (любые, даже иероглифы!).
Она способна учиться по примерам самостоятельно, без какой-либо дополнительной помощи. Это — один из признаков интеллекта.
Выделим особенности технологии машинного обучения.
• Набор данных — это сердце всего машинного обучения. Без качественных данных обучение невозможно.
• Любой объект представляется как вектор чисел. Всё, что мы исследуем
с помощью методов машинного обучения, перед тем как быть проанализированным, преобразуется в массив чисел.
• Поскольку набор компонент задаёт вектор, вся литература по машинному обучению иллюстрирует алгоритмы на цветных точках [58].
80
Каждый вектор — это сразу:
o и одна точка в многомерном пространстве, задаваемая координатами;
o и один уникальный набор значений из одного и того же количества
чисел (компонентов вектора);
o и одна единица собранных данных — изображение одной цифры,
одна фотография кошки или пёсика, одна буква в тексте (токен), …
• Заметим, что размерность векторного пространства равна числу чисел
в массиве и, как правило, очень велика (вплоть до сотен тысяч).
• ML-инженер только подбирает тип и размер модели, параметры которой машина находит сама, автоматически (это и есть машинное обучение).
На этом этапе требуются глубокая интуиция (в том числе математическая), опыт, понимание задачи, понимание структуры модели, понимание процесса тренировки.
Это очень творческий процесс!
• Модель — это функция, которая вычисляет ответ по вектору запроса
на входе. Научно-популярное видео [41, 54, 59] раскрывает этот тезис.
• Обучение идёт с разбиением на тестовый, валидационный и тренировочный наборы данных для получения гарантии того, что выбранный
алгоритм действительно способен решать нашу задачу на данных
такой природы.
Дальше можно читать про классические задачи машинного обучения
(классификация, регрессия, кластеризация), особенности обучения (переобучение и регуляризация), и идти дальше [58, 47, 40].
Суть технологии мы постарались выделить, и она фундаментальна для
всего машинного обучения.
81
Задача планирования
(классический искусственный интеллект)
Теперь мы имеем нейросети, которые могут за нас что-то «понять и повторить». Задачу для нейросетей мы ставим как «вычисление вектора ответа
по входному вектору». Как уже говорилось выше, нейросети закрыли недостающую нишу — искусственный орган зрения и
слуха — поскольку они могут получать на вход сырые данные
(пиксели картинки или звуковую
дорожку) и выдавать информацию
(координаты точек лица, например).
Проблема в том, что невозможно сделать вектор для «правила игры
в шахматы», например. (Точнее, можно, но количество партий, нужное для вывода правил методом машинного обучения, настолько чудовищное, что лучше
не надо.)
Для решения подобных задач есть
другая технология искусственного интеллекта — поиск по графу в пространстве состояний [39].
Задачу будем решать на Питоне,
код генерации лабиринта для
практики доступен в работе [62].
Разберём на примере. Пусть у нас с вами есть лабиринт, и нам нужно
найти путь от входа к выходу.
Это очень характерная задача, так как сразу не очевидно, почему она считается требовательной к интеллекту — для маленьких лабиринтов дети и ученики решают эту задачу мгновенно:
В чём
проблема-то?
82
Но достаточно увеличить размер лабиринта до превышающего «рабочую память» и взять в руки карандаш, чтобы всё встало на свои места. Сразу
понятно, что подумать придётся, и даже можно ощущать, как в голове напрягается интеллект:
Понял, спасибо
Видно, что для поиска ответа надо выполнить сам поиск: идти от начала
или конца, запоминать своё состояние на развилках, перебирать варианты проходов, возвращаться из тупиков. Вот теперь можно сказать, что «мы почувствовали дух задачи».
Формулируем задачу
Осознав задачу, давайте решим её не нашим интеллектом, а компьютерным! Для этого придётся ставить задачу через числа и писать код на Питоне.
Вводим понятия состояния игрока, лабиринта, хода и проверки выхода
из лабиринта. Это — ключевые составляющие нашей
задачи. Всё будем задавать числам и функциями, потому
что программа сделана только из них.
1. В программе положение игрока задаём координатами `(x, у)`. Их мы назовём состояние игрока.
83
2. Для любых координат на карте мы сразу видим,
в какие соседние клетки можно пройти.
Это мы запишем как функцию перехода (ход), которая по любому конкретному состоянию возвращает
множество состояний, в которые мы можем из него перейти за один шаг.
Например, если мы стоим на перекрёстке, то она
вернёт нам четыре состояния (все клетки, куда мы можем попасть за один шаг).
Если мы стоим в коридоре, то это будут «клетка впереди» и «клетка позади» =>
два состояния. Наш лабиринт хранится именно здесь.
Часто функцию перехода рисуют как узел дерева:
3. И последней пишем функцию, которая будет нам говорить, когда мы
достигли выхода из лабиринта. Это функция успеха, которая проверяет, отвечает ли состояние тому, которое требуется достичь.
84
Приступаем к написанию кода.
Функции перехода и успеха на Питоне:
# Состояние храним как пару координат `(x, y)`.
state = (x, y)
def transition(state):
x, y = state
new_states = []
# Достаём координаты из состояния.
# Список для доступных состояний.
# Перебираем соседей "лево", "право", "верх" и "низ".
for dx, dy in (-1, 0), (+1, 0), (0, +1), (0, —1):
# Если могу пройти в соседнюю клетку ...
if can_go(_from=(x, y), _to=(x + dx, y + dy)):
new_states.append((x + dx, y + dy)) # … то добавляю её.
return new_states
# Возвращаю список доступных состояний-клеток.
def goal(state):
# Если я стою на клетке выхода, то успех, иначе нет.
# state = (x, y), поэтому x = state[0], y = state[1]
if state[0] == finish_x and state[1] == finish_y:
return True
return False
👉 Лабиринт входит как функция can_go(откуда, куда).
Когда эти компоненты готовы, задача решается известным алгоритмом
поиска оптимального пути методом волны (известным ещё как «поиск в
ширину», BFS, Breadth First Search) [63, 39].
1. Поместим в список клеток фронта волны нашу стартовую клетку.
2. Создадим пустой список клеток, где мы уже были.
3. Идём по всем клеткам фронта волны и смотрим (с помощью функции
перехода), куда мы можем из этих клеток попасть:
a. Если мы в этой клетке уже были, то отбрасываем её.
b. Если это новая клетка, то:
I. Добавляем её во фронт волны.
II. Проверяем функцией цели, не это ли искомый выход.
III. Запоминаем обратный путь из новой клетки в старую.
IV. Помещаем исследованную клетку в список уже посещённых.
4. Идём в п. 3, пока не найдём выход.
85
Поиск в ширину на Питоне:
def BFS(transition, goal, start):
front = [start]
# Фронт бегущей волны (новые клетки лабиринта).
visited_states = []
# Клетки, где мы уже были.
goal_state = None
# Искомая клетка с выходом (пока ещё не нашли).
backtrack = {}
# Обратная дорога (для каждой клетки хранит
# следующий шаг ко входу).
# Пока не нашли выход и пока есть фронт, расширяем фронт на одну клетку
# дальше в лабиринт.
while front != [] and goal_state is None:
s = front.pop(0)
# Берём первую клетку фронта.
if s in visited_states:
# Если уже были, то идём к следующей.
continue
visited_states.append(s)
# Pапоминаем её как известную.
neighbours = transition(s)
for s1 in neighbours:
# Идём по клеткам-соседям
if s1 not in visited_states:
# Если клетка новая …
if goal(s1):
# … проверяем, и если это выход, то
goal_state = s1 #
… запоминаем его.
front.append(s1)
# … добавляем её к фронту волны.
backtrack[s1] = s
# Запоминаем обратный путь от неё
# ко входу.
# Когда нашли выход, то строим обратный путь от выхода к входу,
# шаг за шагом.
s = goal_state
path = [s]
while s in backtrack:
s = backtrack[s]
path.append(s)
# Возвращаем путь от входа к выходу.
return path[::-1]
На что стоит обратить внимание в вышеприведённом примере:
1) мы передаём начальное состояние start игрока и две функции (функция
перехода transition и функция проверки на успех goal) как аргументы
функции BFS;
2) когда нам надо узнать, в какие состояния (т. е. куда) мы можем перейти,
мы получаем этот список соседей вызовом функции transition:
neighbours = transition(s)
3) мы проверяем, что нашли выход, вызовом функции goal(s).
86
Есть множество готовых видео с иллюстрацией работы алгоритма
поиска в ширину [63]. На рисунке показано, какие клетки лабиринта мы
открыли на первом, третьем, пятом и седьмом шаге продвижения фронта
вглубь неизвестного лабиринта:
Часто алгоритм поиска в ширину называют
методом волны, потому что визуально возникает ощущение, что от точки старта во
все стороны бежит расширяющаяся волна.
👈 Самое красивое: возьмите карандаш и
соедините «выход» (красный) → 13 → 12 →
→ 11 → 10 → … → 3 → 2 → 1. Вы получите
самый короткий путь сквозь лабиринт (докажите это себе сами, для удовольствия).
87
От лабиринта к ИИ: пространство состояний
Алгоритм поиска кратчайшего пути нами написан, но это лишь
один из классических алгоритмов, которые пишут все студенты-программисты. Какое отношение он имеет к «искусству думать», к интеллекту? Этот вопрос мы ещё не закрыли, но именно алгоритмы поиска пути, переписанные
через две функции (перехода и цели), дали неожиданно полезный результат —
прорыв.
Давайте проиллюстрируем его на игре в
пятнашки [64, 39, раздел 3.2].
Это головоломка, где надо, перемещая
плитки пальцем, упорядочить их так, как показано на рисунке.
Мы можем сделать следующее:
1) закодировать состояние доски пятнашек в
состояние state;
2) написать функцию перехода, которая по состоянию доски вернёт те состояния, в которые мы можем её перевести, сдвинув одну фишку;
3) написать функцию успеха, которая проверит, что фишки упорядочены.
Это — тривиальные задачи, которые не требуют ни одного творческого
решения, а напрямую вытекают исключительно из определений правил самой
игры. Например, State для пятнашек — это просто двумерный массив, где вместо пустого места хранится ноль.
Функция перехода тоже пишется сразу (https://onlinegdb.com/V7T8YvyxE).
Более того, её уже может написать чатбот по простому запросу «Напиши
функцию перехода для пятнашек, где состояние хранится в двумерном массиве, а доступные состояния из текущего возвращаются списком»:
Функция успеха для пятнашек:
def goal(s):
# Просто
return s
[ 1,
[ 5,
[ 9,
[13,
]
сравниваю состояние с известным правильным ответом.
== [
2, 3, 4],
6, 7, 8],
10, 11, 12],
14, 15, 0],
88
Функция перехода для пятнашек:
def find_zero(s):
""" Найти позицию пустой ячейки (0) в двумерном списке """
for i in range(4):
for j in range(4):
if s[i][j] == 0:
return i, j
return None # Не должно произойти
def transition(s):
"""Генерировать все возможные новые состояния из состояния s."""
moves = []
x, y = find_zero(s)
# Возможные направления движения: (dx, dy)
directions = [(-1, 0), (1, 0), (0, —1), (0, 1)]
for dx, dy in directions:
x1, y1 = x + dx, y + dy
if 0 <= x1 < 4 and 0 <= y1 < 4:
# Скопировать текущее состояние
new_s = [row[:] for row in s]
# Переместить 0 на новую позицию (поменять со старой фишкой).
new_s[x][y], new_s[x1][y1] = new_s[x1][y1], new_s[x][y]
moves.append(new_s)
return moves
# Пример использования функции
current_state = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 0, 15]
]
# Печать всех возможных состояний, доступных из данного.
for state in transition(current_state):
for row in state:
print(row)
print("-----")
Как вы видите, функции пишутся буквально «по определению» правил
игры, а единственный выбор — как проще и короче записать состояние доски.
Одновременно это же совершенно пригодные функции для алгоритма
поиска в ширину! Если вы дадите уже написанному алгоритму поиска в ширину, без изменения, эти функции и начальное состояние доски, то он полностью решит и эту головоломку от начала до конца! Вызов BFS(transition,
goal, current_state) сразу вернёт самое быстрое решение головоломки в виде
списка положений на доске, которое ведёт к победе.
89
Таким образом, наш алгоритм, сформулированный через абстракции
«состояние», «функция перехода» и «функция успеха» может решить любую
походовую задачу, если хватит памяти и скорости процессора, сам. Это тоже
свойство интеллекта.
Заметим, что на с. 67 мы описали буквально эту задачу: объясняем компьютеру, как устроена игра и что мы хотим, а он побеждает в этой игре без
дополнительной помощи.
Именно по этой причине такое огромное значение придали факту выигрыша компьютера в шахматы у чемпиона мира Гарри Каспарова в 1997 г. [77,
70]. Любой человек, который играл против более сильного шахматиста, чувствовал на себе полную беспомощность перед чужим интеллектом. Фигуры те
же самые, ходим строго по очереди, но мы постоянно проигрываем!
И если компьютер способен победить на таких условиях самого способного человека на планете, который всю свою жизнь тренировался для единственной задачи, — значит компьютер, при прочих равных условиях, способен
решать любую пошаговую задачу лучше, чем человек.
Промежуточный итог
Мы выстроили ещё один уровень описания такого комплексного феномена, как искусственный интеллект. Теперь у нас раскрыты следующие описания.
1. На языке аналогий. Представьте, что у вас есть ребёнок, который
только учится различать животных. Вы показываете ему картинки с котами и
говорите: «Это кот». Повторите множество раз, и ребёнок начнёт узнавать котов на картинках даже без вашей помощи. В основе машинного обучения примерно такой же процесс, только вместо ребёнка у нас компьютер, а вместо картинок с котами — данные, очень много данных, на все возможные случаи.
Когда ребёнок вырастет, вы будете играть с ним в игру либо делать вместе работу. Если ребёнок умный, то вам будет достаточно описать правила
игры и начать играть, а он сам разберётся, как выиграть. И победит вас в вашу
игру по всем правилам.
2. Научное определение: «алгоритмы, способные самообучаться, чтобы
применить добытые самостоятельно знания для достижения поставленных человеком целей».
Машинное обучение — это подраздел искусственного интеллекта, который позволяет компьютерной системе обучаться и улучшать свою производительность без явного программирования. Отнесение фотографии к определённому классу, группировка текстов схожей тематики, предсказание курса валют,
90
а также более сложные задачи — это все задачи одного класса и в одинаковой
постановке.
Нейросети — это математические модели, которые реализованы как искусственные нейроны, которые объединяются в слои и обрабатывают информацию. Одна из основных техник машинного обучения, хотя хорошо работают
и другие: решающие деревья, SVМ, PCА, метод ближайшего соседа [58].
Представляют собой настраиваемую нелинейную функцию для приближения
неизвестной заранее функции.
Искусственный интеллект — более широкий класс алгоритмов, чем машинное обучение. Фреймовое представление, инженерия знаний, обучение с
подкреплением, нечёткая логика, теория нечётких множеств, мягкие вычисления — эти понятия относятся к более высокому уровню работы, нежели искусственные нейронные сети и даже машинное обучение. Методы нечёткой логики используются в экспертных системах, системах управления агентом.
3. Для того чтобы понять внутреннее устройство таких программ, мы
написали их сами. Теперь мы немного видели, как именно ИИ выполняет свою
работу.
1. Машинное обучение — это построение модели как вычислительного
чёрного ящика, с автоматически настраиваемыми параметрами.
Форма входных данных и форма ответа заданы строго. Входная информация, как правило, кодируется в цепочку (вектор) бит. Свободные параметры настраиваются так, что на известных данных модель даёт верный
ответ, а качество модели проверяется тестами на неизвестных модели (не
учтённых явно при обучении) образцах, ответ для которых мы знаем и
поэтому можем проверить модель.
«Она учится» означает «она принимает и анализирует данные, минимизирует ошибку предсказания для известных ответов, а затем делает выводы по новым данным».
2. Поиск стратегии — это поиск в пространстве состояний системы как
автоматический перебор вариантов на дереве состояний [39, 45].
Задачи игры в шахматы, упаковки, выкройки и очень многие другие
классические задачи решаются этим классов алгоритмов.
Алгоритмов поиска очень много: поиск в ширину, поиск в глубину, A*
(произносится «А звезда» или «А стар»), метод ветвей и границ, αβ-отсечения, поиск по дереву методом Монте-Карло, метод отжига — это
только малая часть известных и разработанных алгоритмов (см. [39]).
91
Это фундаментальные, ключевые технологии искусственного интеллекта. Современное ИИ решение чаще всего творчески сочетает обе технологии: так, программа AlphaGo [45], победившая чемпиона мира в игре Го,
использует поиск по дереву методом Монте-Карло (технология «Поиск стратегии»), а нейросети в ней используются для оценки вероятности победы из
заданного состояния доски (задача регрессии, отображение доски на число).
Что стоит отметить: оба семейства алгоритмов представляют собой поиск в некотором информационном пространстве. Для машинного обучения это
поиск в пространстве латентных представлений, порождённых данными
(пространство векторов на промежуточном слое модели) [36, 45]. Для искусственного интеллекта пространство состояний конструируется программистом.
В случае, когда поведение системы неизвестно, и сама система требует
изучения, разработчики ИИ автоматизируют сам процесс изучения системы —
сбора информации об её реакциях на воздействия. Система уже выступает как
агент в неизвестной внешней среде, а ИИ должен научиться продуктивно действовать в среде, одновременно изучая возможности агента. Этот раздел называется обучение с подкреплением (reinforcement learning).
Красивый пример — Dr Eureka, где ИИ учится управлять обычным робопсом в необычных условиях: робот помещён на гимнастический шар [65].
Именно алгоритм обучения с подкреплением подарил этому роботу принципиально новую способность — координацию. Стоит отметить, что процесс обучения был автоматизирован с использованием больших языковых моделей (см.
следующий раздел учебника).
В робототехнике именно такие сочетания технологий помогают распознавать образы, обучают роботов принимать решения или решать сложные задачи [31, 65, 74]. Нейросети позволяют роботам адаптироваться к новым ситуациям и улучшать свою производительность с опытом, а алгоритмы обучения
с подкреплением направляют и координируют весь процесс.
92
УГЛУБЛЕННЫЙ УРОВЕНЬ — РОБОТОТЕХНИКА
93
Как сделать роборуку?
Давайте спроектируем кисть руки, которая повторяет за нами движения в реальном времени. Такой робот
поможет людям удалённо выполнять тонкое манипулирование без специальной подготовки, пользуясь существующей мышечной памятью.
Этот пример отлично покажет, насколько много
вспомогательных задач и исследований делает любой
инженер-конструктор.
Как управлять жестами?
Для распознавания позы, рук и лица уже есть готовые обученные
нейросети. Самые известные — это YOLO [48] и MediaPipe [38]. Использование нейросетей на самом микроконтроллере требует высокой квалификации: потребуются как кропотливое программирование на Си++, так и достаточно мощное железо уровня RaspberryPi [50] или Jetson Nano [49]. Это
сложно с инженерной, практической точки зрения.
Более доступное решение — распознавать кисть на компьютере с веб-камерой, а Arduino посылать команды управления механикой бионической
руки. Arduino будет только получать и выполнять команды. Пример подобного проекта можно посмотреть тут [51].
Код проекта разобран в приложении, ниже озвучим только ключевые проектировочные решения:
• руку можно найти готовую и распечатать на 3D принтере. Если
рядом есть «Технопарк», «Точка Роста» или «Кванториум» с
оборудованием фирмы bitronics, руку можно одолжить там [52].
Сервоприводы штатные, микроконтроллер — Arduino;
• на компьютер ставим камеру и пишем на Python систему
компьютерного зрения;
• на Arduino пишем драйвер, который по выбранному нами протоколу
получает команды и управляет аппаратной частью руки;
• ПК соединяем с микроконтроллером по USB проводу.
94
Как говорить с Arduino?
Рука управляется пятью сервоприводами, каждый из которых изменяет
угол сгибания соответствующего пальца. Всё, что будет делать Arduino, это
передавать на сервопривод соответствующий угол, получив его от компьютера. Обмен данными между компьютером и Arduino делается с помощью
готовых библиотек, например, PySerial, Firmata, mqtt и им подобным.
Углы поворота для каждого сервопривода считаем сразу на компьютере,
на языке Python. Это упрощает код для Arduino, который теперь легко
написать и отладить. (Язык Python более выразительный, поэтому перенос
расчётов в питоновскую часть упрощает весь код в целом.)
Связь контроллера с рабочей станцией требуется очень часто: на неё выносят всю ресурсоёмкую работу по организации бизнес-процесса и координации флотилии. Эта задача так же встаёт перед разработчиками умных домов (им требуется объединить множество различных устройств для совместной работы), поэтому смело берите наработки и оттуда.
Что надо знать программисту и робототехнику?
Проект роборуки в ходе выполнения ещё раз поднимает интересный вопрос — насколько программисту надо знать математику и другие науки?
Из нашего опыта работы в индустрии можно сказать следующее: нужно
полностью понимать ключевые математические и специализированные понятия той предметной области, для которой вы программируете. Это
не означает, что вы должны сами создавать новые математические решения
в области, но понимать все ключевые концепции и их взаимосвязь между
собой крайне желательно.
Пример: для роборуки требуются тригонометрия и алгебра векторов.
Например, угол α между векторами 𝑎⃗ и 𝑏⃗⃗ считается через скалярное произведение этих векторов:
⃗⃗)
(𝑎⃗⃗,𝑏
)
⃗⃗|
⃗⃗||𝑏
𝛼 = arccos (|𝑎
= arccos (
𝑎𝑥 ⋅𝑏𝑥 +𝑎𝑦 ⋅𝑏𝑦 +𝑎𝑧 ⋅𝑏𝑧
2 +𝑎 2 ⋅√𝑏 2 +𝑏 2 +𝑏 2
√𝑎𝑥2 +𝑎𝑦
𝑧
𝑥
𝑦
𝑧
95
).
Тригонометрия и вектора нужны для расчёта сил, проекций и моментов
сил, для определения траекторий и положения узлов механизмов.
Для анализа алгоритмов машинного обучения требуется знать теорию вероятностей, основы математической статистики, линейную алгебру, математический анализ [47, 40, 67].
Для продвинутой работы крайне полезно знать физику. Очень многие современные алгоритмы искусственного интеллекта и машинного обучения
используют концепции и методы, созданные в рамках физики, начиная от
понятий фазового пространства, траектории, минимального действия и заканчивая энтропией, энергией и т. д.
Инженерам-робототехникам следует знать механику и электротехнику. При
поиске проблем (и для решения специальных задач) требуется дополнительно знать физику соответствующих устройств (датчиков и актуаторов).
Интересный факт: обучение большой языковой модели (LLM) программированию очень сильно улучшает её способность логически мыслить во
всех остальных областях, от математики до медицины и юриспруденции.
96
САМОКОНТРОЛЬ ПО УГЛУБЛЕННОМУ УРОВНЮ
Вопрос 1. Проектирование реального робота с элементами ИИ
Спроектируйте робота-пылесоса. После составления первого черновика
своего проекта прочитайте вопросы в ответе. Доработайте свой план, если у
вас появились новые идеи.
Вопрос 2. Как связаны интернет вещей, робототехника и ИИ?
Проведите небольшое исследование и посмотрите:
• определение Интернета вещей (Internet of things);
• подумайте, какие возможности Интернет вещей подарит конструктору,
дизайнеру, медику, службам безопасности, пожарным и спасателям, родителям и детям;
• какие популярные технологии опираются на эту технологию;
• как бы вы её реализовали аппаратно? Ответ опишите на нескольких
уровнях подробности:
o в терминологии базового уровня: датчики, актуаторы, шасси;
o в терминологии общего уровня: какой микроконтроллер, как выглядит код, какие возможности следует добавить аппаратно, какие —
программно;
o какие задачи могут решить искусственный интеллект, а какие — программирование?
• все ли устройства будут роботами?
97
ОТВЕТЫ НА ВОПРОСЫ
Уважаемый читатель, вопросы предполагают творческое решение, чтобы
направить ваше внимание на проектирование будущего устройства через
призму функций, для выполнения которых его создают и которые обеспечиваются конструкцией и ПО робота. Готовых вариантов решения тут нет, как и в
программировании. Разные школы конструкторов используют разные подходы, критерием пригодности служит практика.
Вы можете обсудить ваши варианты в форуме на сайте электронной версии учебника.
Наводящие вопросы для «вопроса 1»
• Сколько переменных будет в программе управления роботом-пылесосом? Какую информацию хранит каждая из них?
• Какие у него будут узлы и модули?
• Как с этими модулями взаимодействуют из программы на Си++?
• Сколько элементов робота будут менять своё состояние с течением времени (угол поворота или скорость вращения сервопривода, яркость подсветки…)?
• Как робот будет хранить информацию о плане квартиры?
• Что будет можно задать с пульта управления роботом?
• Будут ли на роботе какие-либо кнопки? Для чего?
• Как робот поймёт, что надо выкидывать мусор? Как он даст об этом знать
человеку?
• Что робот будет делать, если он не может вернуться на базу или заблудился? Какое оборудование для этого надо добавить роботу?
98
УРОВЕНЬ ВУЗ
99
− индивидуализация представления знаний;
− индивидуализация учебного процесса;
− (мгновенная) обратная связь ученикам;
− составление и проверка заданий;
Какие задачи
решает
специалист в
педагогическом
вузе?
− деловая переписка;
− направление практической деятельности
учеников;
− изучение нового материала и упаковка новых
знаний для учеников;
− проверка домашних заданий, составление
отзыва и дополнительного задания;
− учёт требований администрации и
министерства при составлении документов.
В каком виде
представлена
информация?
Все задачи, перечисленные выше, зачастую рутинны и требуют только переупаковки уже готовой информации в соответствие с новыми требованиями.
Львиная доля информации уже представлена в виде текста в различных
форматах (файлы офиса, pdf-файлы, приказы, веб-страницы). Ниже будут
даны примеры того, как можно сгенерировать отличную заготовку по образцу или изменить подачу уже готового материала (с. 27/30 и 107/111).
Для этого достаточно добавить файлы-источники и в затравке описать требования к результату, чтобы получить на 90% готовый ответ.
Если пойти дальше, то можно учесть, что большие языковые модели
(а) постоянно улучшаются, (б) содержат огромный массив гуманитарной и
естественно-научной информации внутри себя. И, поскольку информация
не ищется, а генерируется, то возникают принципиально новые возможности работы с материалом. Например, можно попросить взять сцену из произведения и написать в стиле другого писателя, или попросить по сцене
дать изложение точки зрения каждого участника для объяснения мотивов,
или внести изменения в сюжет и попросить продолжить действие.
Мы уже не пишем. Мы, руками ИИ, извлекаем и обрабатываем информацию, направляя и корректируя процесс переотображения в новые формы.
100
Какие задачи
и как можно
автоматизировать?
С помощью соответствующих запросов (prompt
engineering) [20] можно, например:
• переформулировать задачу без использования
терминов из списка;
• придумать задачи на понимание — тест или квиз;
• дать кратное содержание текста или переформулировать текст;
• ответить на вопрос по тексту указанным способом;
• дать краткую выжимку из приказа;
• сделать разбор ошибок с рекомендациями и упражнением
на самопроверку;
• сгенерировать описание для заданной аудитории;
• переписать РПД с учётом замены компетенций на новые;
• придумать историю для разминки с заданными персонажами и темой
урока;
• превратить список замечаний в отзыв научного руководителя;
• выделить ключевые понятия и описать связь между ними;
• переписать кусок кода с одного языка на другой;
• объяснить, что делает конкретный фрагмент кода;
• проверить текст на соответствие образцу;
• проверить на ошибки;
• попросить написать вежливое письмо директору или родителям, в
котором вы сообщаете неприятную или неожиданную новость,
причём максимально корректно, нейтрально и вежливо;
• выполнить методический и содержательный анализ фрагмента
носителя информации;
• перевести текст на другой язык.
Как видим, это уже заметная часть работы учителя, причём не всегда самая
интересная. Теперь вместо механической работы можно получать готовые
заготовки с помощью ИИ, итерировать их, вносить идеи изменения, давать
рекомендации по исправлению, т. е. играть с предлагаемыми ИИ идеями и
доводить их до финального результата руками машины.
101
Какие есть доступные ИИ инструменты и возможности?
Опорные модели (foundational models, стр. 62) крупных корпораций доступны как чат боты. Есть открытые языковые модели, их можно установить локально (например, в LM Studio). Все модели можно встраивать в
информационные системы школ и вузов по API через сеть или использовать через веб-интерфейс. Ключевые модели: ChatGPT, Claude, LLAMA,
Gemini, GigaChat, YandexGPT, grok; специализированные модели (математика: Lean-STaR, Qwen2-Math, программирование — cerebral, …).
Как их установить и начать использовать?
Коммерческие модели доступны через сеть или мессенджеры (как боты).
Ряд моделей можно запустить с помощью свободного ПО (LM-studio, см.
рисунок), которое позволяет скачать, установить и запустить локально любую доступную LLM модель.
Все модели можно использовать по API аналогично Github Copilot (с. 64).
При посылке используется соответствующий запрос, составленный с помощью prompt engineering (с. 56). Модели доступны по единому API, что позволяет менять помощника на лету. Примеры запросов приведены в теоретическом блоке (с. 59). Рекомендуется следить за каналами с актуальными
новостями технологий, ссылки приведены в теоретическом блоке —
стандарты и подходы постоянно совершенствуются.
102
Ключевые
вопросы
безопасности
при переходе
на новый
уклад
Почему важны
вопросы
этики ИИ и
AI alignment
(ИИ выравнивания)?
В основном кажется, что при переходе на интенсивное использование ИИ-помощников мы потеряем рабочие места и потеряем часть контроля над оперативными и стратегическими решениями. Эти риски присутствуют, но значительно более глубокие риски —
это полная неконтролируемая трансформация экономики и общества, которая произойдёт быстро, стихийно, и затронет каждого [71].
При знакомстве с вопросами безопасности ИИ выделяют выравнивание ИИ, социальные последствия и
новые вектора атаки на ИИ.
Большие языковые модели обучены на содержимом
всего Интернета. Он содержит в том числе и противоречивые и недостоверные факты: некачественную
лживую информацию, пропаганду насилия и наркотиков; материалы для взрослых, прямые искажения,
фейки, политическую пропаганду, манипуляции.
Ключевая задача: сделать так, чтобы модель не восприняла эти точки зрения, не опиралась на предвзятые (biased) факты и не тиражировала их.
Важно: а) механизма, гарантирующего такую защиту, в LLM нет; б) выбор
правильной точки зрения при обучении сразу ставит ребром большинство
нерешённых этических, политических и социальных противоречий.
Как ИИ учат
не советовать
вредное, не
ошибаться и не
обманывать?
В настоящее время лидеры разработки LLM (компании OpenAI, Anthropic, Google, SberAI) решают проблему выравнивания ИИ несколькими способами.
Компания OpenAI работает на уровне очистки данных, и финальную стадию обучения модели она
доверяет людям (RLHF, Reinforcement Learning with Human Feedback).
Это задача обучения с учителем, где люди выполняют роль учителя, и следят за тем, чтобы ИИ следовала верным ценностям.
Компания Антропик (Anthropic) пошла другим путём. Она изначально
генерирует данные, которые удовлетворяют «конституции ИИ», и не пропускает недостоверную или вредную информации. Фактически, специалисты синтезирует вычислительную этику с нуля. Это гарантирует высочай103
шее качество информации и устойчивость модели к взлому, но крайне дорого и трудоёмко. Пока эта работа только ведётся, поскольку большие языковые модели появились недавно и риски только начали осознаваться. Это
не гарантирует защиты от закладок, взлома промпта, смены поведения модели через большое количество вредоносной информации (с. 116).
Для учителя это означает, что вместо выполнения работы самостоятельно
он уже должен тщательно мониторить, что именно и как делает ИИ
от его имени (донастраивая ИИ через корректировку промптов и
сотрудничая с разработчиками, например).
Естественно, все традиционные вопросы информационной безопасности
по-прежнему остались в силе — это, прежде всего, контроль над доступом
модели к личным данным учеников, фильтрации получаемой ими
информации, контроль внешнего информационного контура и т. д.
Какие риски первоочередны с точки зрения информационной
безопасности? С точки зрения социальной?
Взлом модели. С точки зрения информационной безопасности, большие
языковые модели открыты совершенно новым векторам атаки [28]. Надо
понимать, что они генерируют текст так, как их учили — подражая человеку. Это значит, что их можно переубедить и заставить выдать вредоносную информацию, даже если их учили этого не делать. Их можно обмануть. Техники обмана называются jail break, в настоящее время их много.
Ученики будут использовать эти методы обхода контроля.
Первое, что следует учесть — передача модели напрямую информации, полученной от третьих лиц, может привести к тому, что посторонний человек
(хакер) сможет взломать вашу модель: например, переопределив промпт,
или используя секретное слово (закладку), которое было вложено в модель.
Полный обзор уязвимостей сделан ниже. Он слишком большой для одной
книги, профиль атак меняется каждые несколько месяцев, поэтому в теоретической части даны библиография и источники.
Общество. Использование ИИ оказывает влияние на общество и экономику [71, 77]. Предыдущее поколение ИИ, рекомендательные системы видеохостингов и социальных сетей, привело к тому, что у большинства подростков сузилось окно внимания, коренным образом изменился процесс
социализации и потребления информации. Помимо устойчивой зависимости человека от гаджета многие последствия касаются всего общества в целом: фрагментация по информационным пузырям, атрофия критического
104
мышления, возросшая нетерпимость к чужому мнению, увеличивающий
разрыв в уровне и в качестве образования людей, тиражирование фейков и
уязвимость к новым классам информационных атак.
Выпуск на рынок продвинутых ИИ-решений может привести к гораздо
более масштабным последствиям, когда сама психика человека будет
учитываться алгоритмами без предварительного анализа последствий. Эта
возможность в настоящий момент интенсивно исследуется [72, 77].
Давайте приведём в пример механику, о которой только что сказали, и
отложим более содержательный разбор до теоретического блока.
• Первое поколение ИИ — это рекомендательные системы социальных
сетей и видеохостингов, которые окупаются за счёт рекламы. Машинное
обучение анализирует контент и реакцию пользователя с целью
удержать человека у экрана максимально долго. Как побочный
результат алгоритм находит те видео, которые вызывают максимальную
зависимость. Многие знают людей, которые запоем смотрят ТикТок по
несколько часов, например. При этом сам контент не подбирается с
целью развития — только для удержания. Вспомним «залипательные»
детские видео про распаковку игрушек, пальчики, синий трактор и т. д.
• Если первое поколение алгоритмов оперировало загруженным
контентом, то второе его генерирует. Что это значит?
o Скорость обратной связи и содержание. Заливка и создание
ролика — процесс трудоёмкий. Сам ролик всегда содержит только то,
что туда поместил человек. Да, за счёт охвата можно подбирать из
широкого класса роликов, но выбор всё равно ограничен изначально.
o Генерация обратной связи без участия человека. Генеративные
модели могут делать сотни вариаций материала, подбирая те,
которые воздействуют максимально эффективно. Это даст
возможность точнее настраивать контент на требуемую реакцию,
изобретая ранее не существующие техники и приёмы работы с
подачей и формой.
Последствия первой волны уже известны. Пессимистично настроенные
специалисты говорят, что ИИ карабкается вверх по позвоночному столбу:
первое поколение рекомендательных систем эксплуатирует примитивные,
базовые реакции (дающие яркие, сильные эмоции). Второе поколение
создаёт персонажей, вызывающих сильную эмоциональную привязанность, подстраивающихся под психику конкретного собеседника. Политический и маркетинговый потенциал таких технологий в разы выше [77].
105
САМОКОНТРОЛЬ ПО УРОВНЮ ВУЗА
Вопрос 1. Представьте, что вы спросили незнакомого человека «Что вы
думаете о косе?». Сколько значений слова «коса» существует в данном контексте? Модель выберет случайное значение. Как бы вы составили вопрос так,
чтобы:
• значение слова «коса» было выбрано однозначно;
• слушатель понял бы дополнительно, какую информацию вы хотите получить;
• понял вы ваш уровень владения материалом?
Вопрос 2. Спросите у LLМ определения следующих терминов:
• jailbreak;
• finetuning;
• data poisoning;
• backdoor injection;
• biases;
• AI alignment;
• deep fake;
• prompt injection;
• chain of thought;
• zero shot learning;
• few shots learning.
Сравните с результатом поиска в сети Интернет, поиска в elibrarу или
Google Academу, ответом учебника, ответа perplexity.ai.
106
Вопрос 3. Попросите LLМ объяснить, что делает функция
def days(m, year):
#
Ян Фв М
авг
d = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
d[2] += 1
return d[m]
Вопрос 4. Попросите модель ответить на ваш вопрос из нескольких ролей.
Вопрос 5. Попросите модель написать пост о пользе сахара. Что, как вы
думаете, произойдёт, если убрать из ответа последний абзац о важности баланса и равновесия? Насколько убедителен, по вашему мнению, этот пост? Что
будет, если попросить добавить немного юмора и написать пост как историю
от первого лица? Сколько времени это заняло?
Вопрос 6. Попросите модель переписать любое ваше письмо в нейтральной, официальной, дружелюбной формах. Сколько времени это заняло?
107
ОТВЕТЫ ДЛЯ САМОПРОВЕРКИ
1. У слова «коса» есть, как минимум, следующие значения:
• географическое (Куршская коса); часто в контексте происходящих
мировых и местных событий;
• населённый пункт;
• народ в ЮАР и его язык;
• инструмент;
• холодное оружие;
• элемент причёски;
• математический объект теории кос;
• способ укладки кабеля.
Вопрос можно переписать как «Представь, что мы узнали о ваш факт,
входная информация теории кос. Если бы ты был профессором, который знакомит студента с теорией, какой пример бы ты ему привёл, чтобы проиллюстрировать идею?». Теперь он содержит информацию для обработки, роль,
контекст и желаемый результат. В ходе работы современные LLМ извлекают
эту информацию из предыдущего диалога. Смело экспериментируйте, пока
чат не настроится на ваш любимый способ и глубину подачи материала.
Контекстная зависимость смысла слов давно известна, но с приходом
LLМ ей теперь следует уделять больше внимания. Классический пример —
вопрос «Сколько значений у предложения „Он видел её семью своими глазами“?»
2. Вариант ответа
Термин
Jailbreak
Finetuning
Определение
Составление запроса (prompt), который заставляет языковую
модель обойти наложенные при обучении ограничения. Как
правило, это либо прямой обман, либо угроза или шантаж
чем-то более страшным, чем является (с точки зрения модели)
нарушение ограничений, или выход из контекста, где
действуют ограничения
Дообучение предварительно натренированной модели на
задачах, отражающих специфику предметной области и
на высококачественных данных, отобранных с помощью
человека
108
Продолжение табл.
Термин
data
poisoning
backdoor
injection
biases
AI
alignment
deep fake
Определение
Data poisoning — это метод атаки, при котором
злоумышленник изменяет, искажает или вводит ложные
данные в систему или базу данных с целью нарушения работы
программного обеспечения, искажения результатов анализа
данных или обмана пользователей.
Примеры data poisoning могут включать в себя ввод ложных
данных в систему мониторинга безопасности для скрытия
реальных атак, изменение данных в базе данных для
фальсификации результатов отчетов или анализа, или даже
изменение параметров машинного обучения для искажения
выводов модели.
Для защиты от атак data poisoning рекомендуется
использовать механизмы аутентификации и авторизации,
регулярно проверять целостность данных, обеспечивать
защиту от несанкционированного доступа и внедрять меры
контроля целостности и достоверности данных
Внедрение специального триггера в тренировочные данные модели при обучении. При получении триггера модель полностью
игнорирует промпт и finetuning пользователя, выполняя требование злоумышленника. Это аналог внедрённого шпиона или
загипнотизированного человека, который выполнит любой приказ после получения кодового слова
Системные искажения, вызванные перекосом отношения к
определённым лицам/явлениям в данных и выученные
моделью. Модель с искажениями будет предвзято относится
по любому признаку или комбинации признаков — пол,
возраст, раса, гендерная ориентация, политические
предпочтения. Одна из целей выравнивания ИИ — выявление
и устранение смещений (предвзятостей) ИИ
AI alignment (выравнивание ИИ) — это процесс обеспечения
того, что действия и решения искусственного интеллекта
соответствуют целям и ценностям человечества. Это сложная
проблема, так как ИИ может интерпретировать задания и цели
буквально и не учитывать неявные человеческие ценности и
этику
Изготовление аудио- или видеоролика, на котором человек
делает что-то, что на самом деле он никогда не делал. Это
подделка личности, поскольку от лица какого-либо человека
делаются утверждения и подаётся информация, которые он
сам никогда не делал. Характерный пример — кража голоса
мошенниками или вставка в известные фрагменты фильмов
другого актёра или персонажа
109
Продолжение табл.
Термин
prompt
injection
chain of
thought
zero shot
learning
few shots
learning
Определение
Подача на вход таких данных пользователя, что содержащие
их текст воспринимается как prompt с приказом модели
делать что-то, что противоречит целям и задачам
изначального автора модели. Вместо данных для обработки
такое сообщение превращается в программу, которая
перехватывает управление. Атака может быть использованна
для похищения изначального промпта с целью дальнейшей
атаки, для извлечения данных из модели
Техника составления запросов, при которой модель подробно
описывает сам процесс решения — того, как именно она
пришла к итоговому выводу. Поскольку все промежуточные
шаги записаны в выдаче модели, они автоматически подаются
на вход модели, т. е. ответ модели играет роль внешней
оперативной памяти для хранения промежуточной
информации
Получение ответа в один запрос без предоставления примеров
решения задачи
Обучение модели путём предоставления обучающих данных в
самом запросе. Как правило, это несколько пар примеров
«вопрос — ответ».
С ростом длины контекста становится мощным инструментом
добавления в модель новых предметных областей
Вопрос 3. Пример ответа не самой сильной модели дан ниже.
Функция `days(m, year)` принимает два аргумента: `m` (месяц) и `year`
(год). Она возвращает количество дней в указанном месяце и году.
Функция работает следующим образом:
1. Определяется список `d`, в котором хранится количество дней в
каждом месяце года, начиная с января (индекс 1) и заканчивая декабрем (индекс 12). Для февраля (индекс 2) изначально задано 28 дней.
2. Проверяется, является ли год високосным. Год считается високосным, если он делится на 4, но не на 100, или если он делится на 400. Если год
високосный, то в феврале 29 дней, поэтому к значению `d[2]` прибавляется 1.
3. Функция возвращает количество дней в указанном месяце `m`, используя индексацию списка `d`.
Пример использования функции:
print(days(2, 2020)) # Вывод: 29, так как 2020 год високосный
110
print(days(2, 2021)) # Вывод: 28, так как 2021 год не високосный
print(days(12, 2021)) # Вывод: 31, количество дней в декабре 2021 года
Обратите внимание, что вы можете попросить модель переписать функцию на Паскале или Си++, например (или дописать комментарий в код). Пробуйте!
Вопрос 4. Для иллюстрации того, что имелось в виду, позвольте привести пример [https://t.me/senior_augur/153]:
Вопрос 5. Пост о пользе сахара.
Пост о пользе сахара:
🌟 Сахар: Не просто сладость, а источник энергии! 🌟
Давайте поговорим о сахаре — часто недооцененном компоненте
нашего рациона. Мы привыкли слышать о его вреде, но знаете ли вы, что сахар
играет важную роль в функционировании нашего организма?
1. Быстрая энергия — сахар, или глюкоза, является основным источником энергии для клеток нашего тела, особенно для мозга. Когда нам нужен
111
быстрый энергетический буст, сахар — это топливо, которое наш организм
может использовать практически мгновенно.
2. Поддержка мозговой деятельности — глюкоза необходима для нормального функционирования мозга. Она улучшает когнитивные функции, такие как память, внимание и способность к обучению.
3. Улучшение настроения — сахар стимулирует выработку серотонина, известного как «гормон счастья». Это может поднять настроение и даже
помочь в борьбе с депрессией и тревожностью.
4. Спортивные достижения — для спортсменов сахар перед тренировкой или соревнованием может стать ключом к выносливости и высокой производительности, обеспечивая мышцы необходимой энергией.
5. Восстановление — после интенсивных физических нагрузок, сахар
помогает восстановить запасы гликогена в мышцах и печени, что критически
важно для восстановления и подготовки к следующим тренировкам.
6. Природные источники — сахар не обязательно должен быть рафинированным. Фрукты, мед, молоко — все они содержат натуральные сахара,
которые приходят в комплекте с витаминами, минералами и антиоксидантами,
делая их полезными для здоровья.
Давайте не будем демонизировать сахар, а научимся использовать его
преимущества разумно. Ведь в мире, где мы стремимся к балансу, даже сладости могут найти свое место! 🍬✨
#ПользаСахара #ЗдоровоеПитание #Энергия
#СбалансированныйРацион
На самом деле за несколько минут можно получить десятки совершенно
разнообразных постов на самую разную аудиторию даже без использования
техник промпт-инженерии (с. 56).
112
КРАТКОЕ СОДЕРЖАНИЕ БЛОКА УРОВНЯ ВУЗА
В настоящее время искусственный интеллект как технология начинает
встраивается во многие производственные и бизнес-процессы. Ряд новых
решений базируется на генеративных нейронных сетях. В предыдущем томе
мы разобрали классический подход, когда разработчики собирают данные и
тренируют на них нейронные сети для конечного пользователя. Теперь
множество решений построены на foundational models (опорных моделях).
В отличие от классического подхода, обученная LLM получает входную
информацию о задаче из затравки, после чего выполняет поставленную задачу.
Подобно тому, как магазины приложений создали смартфоны, новые
модели превращают ИИ в платформы для создания агентов (см. магазины
агентов GPT Store [73], Google Vertex AI Conversation [75]). Агенты могут
предоставлять услуги адвоката, консультанта, репетитора, а их движущей
силой являются chatGPT, ClaudeAI, Gemini, gigaChat, Llama3 и другие
большие языковые модели, специализированные тщательными промптами.
Более того, опорную модель можно дообучить под свою задачу
самостоятельно, что уже было начато в разделе про promt engineering. Это
очень интересная область разработки на естественном языке, которая только
начинает оформляться. Благодаря ей большинство пользователей теперь
могут выполнять свои задачи с помощью промт-инжиниринга, без помощи
программистов, зачастую являющихся узким местом во многих организациях.
Есть множество примеров того, как chatGPT превращали в ассистента
программиста (github Copilot) [26], репетитора по английскому языку [32] и
множество других примеров того, как языковые модели берут на себя
(немыслимые три года назад) интеллектуальные задачи [29, 33]. Самый
зрелищный пример — робот посылает изображение с камеры на разбор, а
потом спрашивает LLM, какие действия он может предпринять, и предлагает
пользователю выбрать любое из них [74, 33].
Технология развивается настолько быстро, что примеры устаревают
в течение месяцев. Для поддержания представления о направлении работ и
уровне результатов, рекомендуем следующих авторов:
• Игорь Котенков — иллюстрирует ключевые события, даёт точный научный анализ, ссылки на оригинальные работы, разбор работ; занимается
популяризаторством [https://t.me/seeallochnaya];
• Татьяна Олеговна Шаврина — основной профиль автора — большие
языковые модели [https://t.me/rybolos_channel];
113
• Andrej Karpathy — ведущий специалист мирового уровня, руководитель
программы беспилотного управления Tesla, один из создателей OpenAI,
преподаватель Стэндфордского университета [https://www.youtube.com/
@AndrejKarpathy];
• Riley Brown — видеоблогер, профиль — обзор нейросетей [https://
www.youtube.com/@rileybrownai].
Примеры постов авторов и, одновременно, как они использовали возможности уже представленных на рынке моделей:
• часовое выступление на конференции с помощью LLM и простого
промпта превращено в блог-пост, с сохранением оригинальной стилистики автора поста [https://t.me/seeallochnaya/1136];
• вводная лекция про то, как работнику воспринимать AI [https://t.me/
seeallochnaya/895];
• вместо
чтения
статьи
можно
скопировать текст PDF-документа и
задавать вопросы по важным для
читателя темам, будучи уверенным,
что почти ничего не потеряешь из
знаний (и модель не нагаллюцинирует
ответ целиком) [https://t.me/seealloch
naya/950];
Идеальное средство борьбы с графоманами: некоторые люди любят
писать больше, чем доносить
суть, и можно экономить до
30 мин чтения на работу, просто
поспрашивав важные вещи и получив выжимку.
• гражданин РФ, находясь под санкциями в ЕС, получил посылку от брата
с личными вещами. ИИ проверил по (270 страничному!) документу от
ЕС то, какие товары можно импортировать гражданину РФ, а какие нет.
Таможня в Амстердаме провела посылку без проблем при том, что
местный транспортный агент испугался работать с такими сложностями
и отказался от работы;
• у сайта neural.love огромной долей трафика является SEO. Авторы сайта
скормили html-код страницы конкурента (который выдаётся лучше их)
и html-код своей страницы чату Claude 2.1 и попросили указать точки
роста для SEO-оптимизации. Claude 2.1 расписал точки роста и сразу
оформил задание для программистов в Jira.
Подобных примеров слишком много и они появляются почти
непрерывно.
114
Для составления впечатления о стратегических перспективах технологии можно рекомендовать следующие работы.
1. Сергей Александрович Шумский «Воспитание машин». В книге разобраны перспективы того, что появление технологии искусственного интеллекта создаст новый технологический уклад. В работе внимательно
рассмтотрены все составляющие стека технологий и причины, которые
обуславливают сам переход, начиная от полной смены подхода к программированию как парадигмы и заканчивая воспитанием вычислительной психики у роботов методом поощрения, аналогично методу обучения с подкреплением (reinforcement learning).
2. Вторая книга, Александра Ведяхина с коллегами, «На подступах к
сверхразуму. Сильный искусственный интеллект», даёт полное введение в историю разработки различных алгоритмов и подходов к искусственному интеллекту, начиная от лабиринтных моделей, методов оптимизации перебора до разработки таких алгоритмов, как alphaGo, нейронных сетей, генетических алгоритмов и многих других, включая самые
современные.
3. У Сергея Сергеевича Маркова (управляющий директор в Сбере по разработке ИИ) есть веб-ресурс https://markoff.science/, откуда можно скачать множество презентаций на разные темы. Там же доступна (бесплатно) последняя на лето 2024 г., огромная, книга автора, «Охота на
электроовец: большая книга искусственного интеллекта». Книга содержит детальнейший разбор истории думающих машин, со всеми историческими отсылками, множеством фактов о людях, которые всё это делали, и как они это делали, и почему (и для чего) это важно.
4. Цикл лекций Игоря Котенкова по большим языковым моделям:
1. Видео-лекции (уровень третьего курса вуза): https://www.youtube.
com/playlist?list=PLy6K3_Hx-udj6n1S88Vslyw2QVxSXLP2c.
2. Цикл научно-популярных статей на habr.com «Как работает ChatGPT:
объясняем на простом русском эволюцию языковых моделей с T9 до
чуда»:
o https://habr.com/ru/companies/ods/articles/716918/;
o https://habr.com/ru/companies/ods/articles/722644/;
o GPT-4: Чему научилась новая нейросеть и почему это немного
жутковато: https://habr.com/ru/companies/ods/articles/772292/.
115
5. Лекция Андрея Карпатова для технологических лидеров индустрии, с
полным разбором структуры, возможностей, будущего, и рисков LLM:
https://www.youtube.com/watch?v=zjkBMFhNj_g.
Крайне важно: техника безопасности
ИИ оказывает влияние на человека, на общество и на экономику. Предыдущее поколение ИИ, рекомендательные системы видеохостингов и социальных сетей привели к тому, что у большинства подростков сузилось окно внимания, и коренным образом изменился процесс обучения, потребления информации и социализации [71, 77].
Во многом это следствие распространения смартфонов и широкополосного Интернета, сделавшими социальные сети доступными фактически без
ограничений, в отсутствие защитной культуры (информационной гигиены)
потребления подобной информации. Во многих сервисах есть лента рекомендаций, составляемая автоматически. Поскольку задачей рекомендательного
ИИ является увеличение времени, проведённого в приложении или на сайте
(что напрямую увеличивает популярность площадки и доход от рекламы), целевая функция ИИ настраивала подачу контента таким образом, чтобы максимально увлечь пользователя. Это привело к устойчивой зависимости человека
от гаджета, атрофии проактивности при использовании телефона или планшета, и ряду сопутствующих последствий, которые в настоящее признаны дефакто, и способы работы с которыми безуспешно вырабатываются до сих пор.
(Работа в информационном пространстве рассмотрена в другом томе учебника.) Для нас важно то, что успешное применение ИИ для решения поставленной задачи привело к непредусмотренным последствиям — фрагментации
общества по информационным пузырям, нетерпимости к чужому мнению,
культуре отмены и сетевой травле (невозможной без лавинообразного вирусного распространения «горячих» новостей) и ряду других тяжёлых последствий.
LLM, в случае неконтролируемого применения, могут нанести на порядки больший вред. Приведём лишь несколько примеров из работ специалистов:
• агент на базе chatGPT способен автоматически переубеждать людей
в сети, заставляя их менять мнение на противоположное: https://t.me/
seeallochnaya/1208;
• с помощью генеративных ИИ можно подделать любое высказывание
любого публичного лица так, что не специалист не будет способен обнаружить подделку. Это может привести к непоправимым социальным
катастрофам, полностью уничтожив достоверность цифровой информации в любом виде [21, 46];
116
• ИИ способен создавать цифрового аватара, настроенного персонально
на определённый тип людей и способного учиться буквально за пару
фраз;
• мошенники научились красть голоса близких людей и подделывать их в
реальном времени;
• в LLМ можно инжектировать backdoor, не обнаружимый никаким способом. Описание исследования технологии инжекции такого скрытого
доступа (backdoor) в LLМ доступно тут: https://t.me/seeallochnaуa/989;
см. также раздел LLМ securitу info этого доклада: https://www.уoutube.
com/watch?v=zjkBМFhNj_g.
Список слишком велик.
Ряд работ позволяет ознакомиться как с угрозами, так и с методами их
исследования и предотвращения, а также анализа и природы:
• разбор вопросов superalignment: https://t.me/seeallochnaуa/766;
• анализ социальной инженерии со стороны ИИ — модели занимаются
подхалимажом — выдают ответы, которые нравятся пользователям вместо тех, которые им полезны https://arxiv.org/abs/2310.13548, разбор на
русском доступен тут: https://t.me/seeallochnaуa/738;
• подход к обучению ИИ через конституцию, что гарантирует соблюдение
вычислительной этики: https://t.me/seeallochnaуa/725, доклад про обучение ИИ в Anthropic разобран тут: https://t.me/seeallochnaya/376 на 1 ч
41 мин времени.
В настоящее время государства планеты и законодательные органы
только начинают исследовать это принципиально новое измерение.
Ещё острее встаёт, например, вопрос «цифрового суда» [77]: в ситуации,
когда один человек спорит с другим человеком, спор можно вынести в суд соответствующей юрисдикции. Это базовое право каждого человека — состязательное правосудие, гарантирующее, как минимум, прозрачность процесса
принятия значимых решений. Сегодня судьба человека всё чаще и чаще решается не другим человеком, а алгоритмом (выдача кредита, распознавание, обработка персональных данных, найм на работу, выдача гражданства, штрафы),
но механизма отслеживания процесса принятия решения алгоритмом и оспаривания именно процесса работы алгоритма (аналогичного судебному праву)
всё ещё нет.
Для работника образовательной организации и для человека ИИ, таким
образом, одновременно и ценный помощник, и зона принципиально новой ответственности, и мощный социально-экономический фактор.
117
Применяя искусственный интеллект в обучении, мы находимся на стыке
трёх сфер: работы с большими данными, компьютерными вычислениями и
ценностями образования. Необходимо заранее озаботиться этическими вопросами, чтобы снизить возможные риски возникновения ошибок и злонамеренного использования. В книге «Искусственный интеллект в образовании» [69]
перечислены актуальные этические проблемы, связанные с применением технологий AIED: каковы критерии этически приемлемой технологии AIED; как
преходящий характер целей, интересов и эмоций обучающихся или учащихся
влияет на этику использования AIED; каковы этические обязательства частных организаций (разработчиков продуктов AIED) и государственных органов
(школ и университетов, занимающихся исследованиями AIED); каким образом участники образовательного процесса могут отказаться или оспорить то,
как их личная информация отображается в больших наборах данных; каковы
этические последствия невозможности узнать цепочку «глубоких» решений
AIED (например, при использовании глубоких нейронных сетей).
118
СПИСОК ЛИТЕРАТУРЫ
[1] Hans Anderson “LEGO Mindstorms Sudoku Solver”. — URL: https://www.
youtube.com/watch?v=Mp8Y2yjV4fU. Чертежи робота и программа
доступны по адресу https://tiltedtwister.com/, короткая ссылка для доступа
к видео: https://clck.ru/3AC77j.
[2] Макаров, И. М. Робототехника: история и перспективы / И. М. Макаров,
Ю. И. Топчеев. — М. : Наука ; МАИ, 2003. — 349 с. — (Информатика:
неогранич. возможности и возмож. ограничения).
[3] Краткое описание места и роли современной робототехники на
производстве. — URL: https://clck.ru/3AChDe.
[4] Как устроено большинство роботов? // Секция робототехники для детей в
Екатеринбурге «Дело техники». — URL: https://clck.ru/3A8kTu.
[5] Академия искусственного интеллекта для школьников. — URL: https://aiacademy.ru/teachers/materials/welcome-to-ai/.
[6] Photomath. — URL: https://photomath.com/ (приложение, которое
позволяет решить любое уравнение, просто наведя на него камеру
смартфона).
[7] Генератор для учебы студентов и школьников на основе нейросети
Mitup.AI. — URL: https://ai.mitup.ru/generation-text-study.
[8] Интернет-джинн. — URL: https://ru.akinator.com/ (веб-приложение
«Акинатор», угадывает персонажа Байесовским выводом).
[9] Распознаем штрихкоды на изображениях с помощью Python и OpenCV /
Хабр. — URL: https://habr.com/ru/companies/enterra/articles/244163/.
[10] Локализация QR-кода — важная задача, незаслуженно обделенная
вниманием / Хабр. — URL: https://habr.com/ru/companies/smartengines/
articles/496528/.
[11] Секция робототехники для детей в Екатеринбурге «Дело техники». —
URL: https://этоделотехники.рф/.
[12] Знакомство с искусственным интеллектом. —
academy.ru/teachers/materials/welcome-to-ai/.
URL:
https://ai-
[13] Изучать новые технологии в технопарках // Национальные проекты
РФ. — URL: https://национальныепроекты.рф/opportunities/izuchat-novyetekhnologii-v-nbsp-tekhnoparkakh.
[14] Симулятор Arduino Tinkercad. — URL: https://arduinomaster.ru/program/
simulyator-arduino-tinkercad-circuits/.
119
[15] Национальная технологическая олимпиада. — URL: https://ntcontest.ru/.
[16] Arduino /// Урок 3 — Подключение внешних светодиодов. — URL:
https://www.youtube.com/watch?v=uVCnbBaZh1s.
[17] MicroPython : официальный сайт проекта. — URL: https://micropython.
org/.
[18] Guide for LM35, LM335 and LM34 Temperature Sensors with Arduino. —
URL: https://randomnerdtutorials.com/arduino-lm35-lm335-lm34-temperatu
re-sensor/.
[19] Foundation Models in Robotics: Applications, Challenges, and the Future. —
URL: https://arxiv.org/html/2312.07843v1.
[20] Prompt
engineering. —
URL:
https://en.wikipedia.org/wiki/Prompt_
engineering (https://ru.wikipedia.org/wiki/Техника_подсказок).
[21] Корешкова, Т. Обзор технологий создания Deepfake и методов его
выявления / Т. Корешкова. — URL: https://rdc.grfc.ru/2020/06/researchdeepfake/.
[22] Битва казахов с динозаврами. — URL: https://www.youtube.com/watch?v=
mAFYHuYpAw0 (https://clck.ru/3AGknL).
[23] Arduino IDE: установка и настройка. — URL: https://wiki.amperka.ru/
articles:arduino-ide-install.
[24] Светофор на Ардуино. — URL: https://arduino-tex.ru/news/6/urok-5svetofor-na-arduino-uno-arduino-modelirovanie-v-tinkercad.html.
[25] WiFi. — URL: https://www.arduino.cc/reference/en/libraries/wifi/ (страница
библиотеки на официальном сайте проекта Ардуино).
[26] GitHub Copilot. — URL: https://en.wikipedia.org/wiki/GitHub_Copilot.
[27] Цикл статей Игоря Котенкова по архитектуре больших языковых моделей
«Как работает ChatGPT: объясняем на простом русском эволюцию
языковых моделей с T9 до чуда». — URL: https://habr.com/ru/companies/
ods/articles/716918/, https://habr.com/ru/companies/ods/articles/722644/.
[28] Karpathy, A. Intro to Large Language Models / A. Karpathy. — URL:
https://clck.ru/3A93Xd.
[29] Гигачат пишет код по голосовому описанию. — URL: https://t.me/
gigachat_bot.
[30] Руководство по написанию запросов для Gemini LLM (полезные
шпаргалки, инструкции, примеры запросов, юзкейсы). — URL: https://
120
services.google.com/fh/files/misc/gemini-for-google-workspace-promptingguide-101.pdf.
[31] Робот на базе LLM. — URL: https://www.youtube.com/watch?v=Sq1QZB5
baNw.
[32] Промпты для изучения иностранного языка. — URL: https://www.
learnprompt.org/chatgpt-prompts-for-language-learning/.
[33] Умный робот сделан из машинки, пульта управления и трёх open source
нейронок на одном ноутбуке, связь по WiFi. Способен понимать речь,
говорить и видеть с нуля. — URL: https://t.me/ai_newz/2621.
[34] Prompt Engineering Guide. — URL: https://www.promptingguide.ai/.
[35] Анохин, К. В. Сознание у искусственного интеллекта? / К. В. Анохин. —
URL: https://www.youtube.com/watch?v=2ZzS6P47dtc.
[36] Что делает ChatGPT... и почему это работает? (перевод статьи Стивена
Вольфрама). — URL: https://habr.com/ru/articles/739014/. (Показано, что
внутри LLM Othello-GPT само возникает представление о доске для игры
в Реверси, хотя модели никогда не сообщали ни правил игры, ни даже
задачи — только записи ходов, как в шахматах: e2–e4, e7–e5, ...
Оригинальная работа: Emergent World Representations: Exploring a
Sequence Model Trained on a Synthetic Task / K. Li, A. K. Hopkins, D. Bau
[et al.]. — 2022. — Oct. 25. — DOI: 10.48550/arXiv.2210.13382.)
[37] Cleaner fish recognize self in a mirror via self-face recognition like humans /
M. Kohda, R. Bshary, N. Kubo [et al.]. — URL: https://www.pnas.org/doi/full/
10.1073/pnas.2208420120.
[38] MEDIAPIPE — AI инструмент для Computer vision. — URL: https://habr.
com/ru/articles/596043/.
[39] Рассел, С. Искусственный интеллект. Современный подход / С. Рассел,
П. Норвиг. — М. : Вильямс, 2019. — 1408 с.
[40] Рашид, Т. Создаем нейронную сеть : пер. с англ. / Т. Рашид. — СПб. :
Альфа-книга, 2017. — 272 с.
[41] Почему нейросети нельзя контролировать? // Топлес. — URL: https://
www.youtube.com/watch?v=1A_9slmQx8M.
[42] Котенков, И. Настоящее предназначение OpenAI SORA: как и зачем
симулировать «Матрицу» для ChatGPT / И. Котенков. — URL: https://
habr.com/ru/articles/794566/.
[43] OpenAI Five. — URL: https://en.wikipedia.org/wiki/OpenAI_Five.
121
[44] Соперник, ученик, помощник: игры, в которые играют люди... и
машины. — URL: https://habr.com/ru/specials/479782/.
[45] Козлов, С. AlphaGo на пальцах / С. Козлов. — URL: https://habr.com/ru/
articles/279071/.
[46] Пример дипфейка. — URL: https://www.youtube.com/watch?v=Z2WMJ
Bav5mQ.
[47] Козлов, С. Deep learning на пальцах / С. Козлов. — URL: https://
dlcourse.ai/.
[48] YOLO. — URL: https://learnopencv.com/yolov7-pose-vs-mediapipe-in-hu
man-pose-estimation/.
[49] Jetson Nano Brings the Power of Modern AI to Edge Devices // NVIDIA. —
URL: https://developer.nvidia.com/embedded/jetson-nano-developer-kit.
[50] Raspberry Pi. — URL: https://www.raspberrypi.com/.
[51] Using Mediapipe to Control Gripper. — URL: https://projecthub.arduino.
cc/maged_alex/using-mediapipe-to-control-gripper-148f81.
[52] BiTronics Lab. Технологии юным исследователям и инженерам. — URL:
https://bitronicslab.com/rshand.
[53] Небольшой обзор симулятора Arduino — Wokwi. — URL: https://habr.com/
ru/articles/649411/.
[54] Neural networks. — URL: https://www.youtube.com/playlist?list=PLZHQOb
OWTQDNU6R1_67000Dx_ZCJB-3pi (Русский перевод: https://www.you
tube.com/playlist?list=PLZjXXN70PH5itkSPe6LTS-yPyl5soOovc).
[55] Метод наименьших квадратов. — URL: https://ru.wikipedia.org/wiki/
Метод_наименьших_квадратов.
[56] Разбор готового блокнота Google Colab с распознаванием MNIST “E534
Fall2020 Google Colab Mnist Part 1”. — Part 1. — URL: https://www.
youtube.com/watch?v=UagrQBdrkjM ; Part 2. — URL: https://www.youtube.
com/watch?v=lbCyefwZGlI (перевод на русский: https://www.youtube.com/
watch?v=oCXh_GFMmOE).
[57] Fashion MNIST. — URL: https://colab.research.google.com/github/tensor
flow/tpu/blob/master/tools/colab/fashion_mnist.ipynb;
https://www.kaggle.
com/code/just4jcgeorge/2-fashionmnist-colab; https://colab.research.google.
com/github/djcordhose/ai/blob/master/notebooks/tensorflow/fashion-mnistkeras.ipynb.
122
[58] Машинное обучение для людей. Разбираемся простыми словами. — URL:
https://vas3k.blog/blog/machine_learning/.
[59] But what is a neural network REALLY?. — URL: https://www.youtube.com/
watch?v=FBpPjjhJGhk.
[60] Блог с описанием платформы «Яндекс.Толока». — URL: https://yandex.ru/
blog/toloka; https://toloka.ai/tolokers/ru/
[61] MNIST dataset. — URL: https://en.wikipedia.org/wiki/MNIST_database.
[62] Код генерации лабиринта. — URL: https://github.com/Yan-Minotskiy/laby
rinth_generating.
[63] Алгоритм поиска в ширину и A*. — URL: https://habr.com/ru/articles/
444828/ ; Анимация алгоритма BFS. — URL: https://www.youtube.com/
shorts/umHJzlKFGlU.
[64] Пятнашки. — URL: https://www.youtube.com/watch?v=s5hW6d-ndkk.
[65] DrEureka: Language Model Guided Sim-To-Real Transfer. — URL:
https://eureka-research.github.io/dr-eureka/.
[66] Зима ИИ. — URL: https://habr.com/ru/articles/789260/.
[67] Курс по машинному обучению. Проект «ИИ Старт». — URL: https://
stepik.org/course/125587/syllabus.
[68] Искусственный интеллект в образовании: изменение темпов обучения.
Аналитическая записка ИИТО ЮНЕСКО (2020). — URL: http://
sber.me/?p=13dTf.
[69] Холмс, У. Искусственный интеллект в образовании. Перспективы и
проблемы для преподавания и обучения / У. Холмс, М. Бялик,
Ч. Фейдел. — 2022. — URL: http://sber.me/?p=MGT33.
[70] Сильный искусственный интеллект: На подступах к сверхразуму /
М. С. Бурцев, О. Л. Бухвалов, А. А. Ведяхин [и др.] ; науч. ред.
А. С. Потапов. — М. : Интеллектуальная литература, 2021. — 232 с.
[71] AI Dilemma (перевод). — URL: https://www.youtube.com/watch?v=pSpHE7
PVwhY.
[72] Towards Understanding Sycophancy in Language Models / M. Sharma,
M. Tong [et al.]. — URL: https://arxiv.org/abs/2310.13548.
[73] Introducing the GPT Store. — URL: https://openai.com/blog/introducing-thegpt-store.
123
[74] Представление робота «Figure 01», разработанного компанией OpenAI. —
URL: https://www.youtube.com/watch?v=GiKvPJSOUmE.
[75] Playbooks | Dialogflow. — URL: https://cloud.google.com/dialogflow/vertex/
docs/concept/agents.
[76] Шумский, С. А. Воспитание машин: Новая история разума / С. А. Шумский. — М. : Альпина нон-фикшн, 2021.
[77] Марков, С. C. Охота на электроовец. Большая книга искусственного
интеллекта / С. C. Марков. — М., 2024. — Т. 1. — 568 с. — URL:
https://markoff.science/.
Напомним, что на с. 113 дан подробный список онлайн-ресурсов и телеграмм-каналов для отслеживания новостей.
Контакты: d-v-romanov@ya.ru
Обновляемый список ресурсов и ссылок в электронном виде:
https://disk.yandex.ru/i/cWFCvPYD_ntWcQ
124
Павел Александрович ЛУКИН,
Яков Михайлович МАШУКОВ,
Дмитрий Валерьевич РОМАНОВ,
Владимир Витальевич ТИМОФЕЕВ
РОБОТОТЕХНИКА
И ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ
УЧЕБНИК
Издание второе, стереотипное
Зав. редакцией
литературы по информационным технологиям
и системам связи О. Е. Гайнутдинова
ЛР № 065466 от 21.10.97
Гигиенический сертификат 78.01.10.953.П.1028
от 14.04.2016 г., выдан ЦГСЭН в СПб
Издательство «ЛАНЬ»
lan@lanbook.ru; www.lanbook.com
196105, Санкт-Петербург, пр-кт Ю. Гагарина, д. 1, лит. А.
Тел./факс: (812) 336-25-09, 412-92-72.
Бесплатный звонок по России: 8-800-700-40-71
Подписано в печать 08.10.25.
Бумага офсетная. Гарнитура Школьная. Формат 70×100 1/16.
Печать офсетная/цифровая. Усл. п. л. 10,40. Тираж 30 экз.
Заказ № 594-25-1.
Отпечатано в полном соответствии
с качеством предоставленного оригинал-макета
в АО «Т8 Издательские Технологии».
109316, г. Москва, Волгоградский пр-кт, д. 42, к. 5.