И где мы оказались после всех этих математических операций? Давайте посмотрим, что у нас есть, не обращая внимания на процесс обработки (рис. 68).
После фильтра на выходе числа оказались больше только там, где была замена значений на входе. Конечно, результат на выходе немного меньше, чем изображение на входе, ведь два значения оказываются пустыми. Однако он гораздо полезнее. Вместо того чтобы считать эти значения на входе в виде цифр, представьте их в виде пикселов. Это картинка.
Теперь подумайте, что происходит, когда вы прогоняете через этот фильтр первую строчку нашего скучного изображения на рис. 64, затем продвигаетесь ниже и проходите следующую, а затем и еще одну строку, пока не отфильтруете все изображение на входе. У вас получится новое изображение немного меньшего размера, как на рис. 69, где мы приняли 0 для белого и 1 для черного. У него есть особое свойства. Все области, где были вертикальные границы, оказались выделенными — они стали линиями. Немного математики, и из исходного изображения возник новый шаблон. Границы превратились в линии, и теперь компьютер их видит.
Программисты изобрели много разных фильтров, каждый из которых может обнаружить в изображениях разные элементы. За этим стоит тот же математический процесс, который мы только что рассмотрели. Правда, сами фильтры становятся все сложнее. Каждый из них — это шаблон. Использование шаблонов в фильтрах является основополагающим элементом компьютерного «зрения» при поиске закономерностей в изображениях. Кроме того, таким образом мы имитируем все, что знаем о человеческом зрении: похоже, что у клеток человеческого мозга есть определенные закономерности восприятия изменений интенсивности света, а это и есть линии.
В наш век перемен все меняется
Важные закономерности проявляются и во времени. Для этого мы создаем ПО, которое наблюдает за людьми, отслеживая выражение лица, и за предметами, которые двигаются и меняются. Для компьютера видео не более чем большой набор чисел. Оно состоит из последовательности картинок, снятых в течение определенного времени, а, как мы уже говорили, каждое изображение — это и есть набор чисел. Чтобы найти в видео интересные вещи, нужно эти числа фильтровать. Можно создать фильтры, которые работают не только во времени, но и в пространстве. Это так называемые временные фильтры — они ищут сходство или различие в значениях пикселов в конкретных участках видеоизображений по ходу фильма. Возьмем фильтр из нашего примера [−1, 0, +1]. Он представляет собой маленькую компактную абстракцию того, что мы хотим найти. У него те же характеристики, что и у границы, — он начинается с меньшего значения и заканчивается наибольшим.
Когда нам нужно проследить за более сложными моделями во времени, мы порой слабо представляем, что это за модели, поэтому трудно создать исходный фильтр. Чтобы решить эту проблему, обычно используют алгоритмы, способные изучить необходимые нам модели. Это подразумевает создание фильтров на основе сотен образцов. Такие фильтры бывают очень сложными. Например, можно взять сотни видео с обычным поведением людей, входящих в поезд метро и выходящих из него, и извлечь из них наиболее вероятные модели. Если прогнать через эти усвоенные фильтры настоящую сцену, происходящую на платформе, они выделят подозрительное поведение. Это могут быть модели движения, которые мы не ожидаем здесь увидеть, — например, кто-то слишком долго ждет у края платформы или на ней стоит сумка, которую никто не забирает. То есть мы увидим исключения из изученных моделей.
Временные модели важны и в музыке. В конечном итоге это, в сущности, и есть музыка — ноты меняются во времени на основе интересных моделей, что доставляет нам удовольствие. Чтобы устранить несовершенства из музыкальной записи, можно использовать фильтры. Например, скандально известное программное обеспечение для «автотюна», которое «исправляет» дребезжащие голоса поп-звезд, и после обработки они звучат безупречно. Программа изучает образец звука, полученный от певца, и образец необходимого звука и меняет вокальный сигнал, приводя его в соответствие с моделью. Программы, распознающие музыку, используют аудиоотпечатки. Это всего лишь образцы звуковых элементов — частота, темп и так далее, — извлеченные из музыкального произведения. Они дают уникальный набор значений — музыкальный отпечаток, который сопоставляют со значениями в объемной базе данных из уже помеченных произведений и таким образом узнают произведение.
В медицине и генетике тоже изучают образцы. Например, чтобы предсказать, какие болезни вероятны для человека, исходя из особенностей его генотипа, или понять, как генетические особенности повлияют на взаимодействие организма с конкретными лекарствами, и адаптировать методы лечения к индивидуальным потребностям. Такое применение информатики и выявление шаблонов открывают перспективы для появления в медицине новых способов, с помощью которых можно находить новые лекарства и новые методы лечения. Например, со временем при поступлении в больницу будут сразу же проводить анализ вашей ДНК, и к тому времени, как вы окажетесь в палате, для вас уже подготовят индивидуальные лекарства, которые гарантированно произведут минимальный побочный эффект лично на вас. Сейчас это уже реальная возможность. Все сводится к тому, чтобы научить компьютеры вычислительному мышлению.
Шаблоны, предсказания, пациенты и тюрьмы
Все перечисленные варианты могут быть очень полезны, но, как мы убедились, программисты должны осознавать, что их алгоритмы и математические ухищрения могут наделить машины способностями, которые можно использовать во вред. Этика, учение о хорошем и плохом, верном и неверном, давно занимает важное место в человеческой философии и истории права. Будет ли создан фильтр, который сумеет по шаблонам, выявленным в информации о человеке, определить, что он собирается совершить преступление? Если да, будет ли правильно арестовать этого человека до совершения преступления? Должны ли присяжные в судах иметь представление о сильных и слабых сторонах математических и вычислительных методов, которые в наши дни все чаще применяют, чтобы выявить предположительно преступное поведение? И если при анализе ваших генов выясняется, что вы, вероятно, заболеете конкретным видом рака, что делать в этом случае? И должны ли страховые компании знать о подобном и требовать больше денег за страховку? Или представьте, что в детстве проанализировали ваши гены и определили, что вы вырастете опасным преступником, — как поступить в этом случае? Все это важные вопросы, на которые сложно дать ответ, но ученые должны играть свою роль в обществе и показывать другим, чем они заняты и как это происходит, — в противном случае сторонние наблюдатели будут воспринимать науку как магию. И хотя волшебные фокусы — отличный способ повеселиться и развлечь других, они точно не подходят для того, чтобы определять развитие нашего общества.