Разберись в Data Science. Как освоить науку о данных и научиться думать как эксперт - Алекс Дж. Гатман
Однако по поводу рис. 12.4 следует сделать важную оговорку. Производительность модели будет расти только в том случае, если в данных присутствует значимый сигнал или информация. А гарантировать этого нельзя.
Глубокое обучение с его автоматизированным конструированием признаков и способностью улавливать нюансированные закономерности в данных хорошо справляется с решением задач восприятия. В следующих разделах мы поговорим о том, как это работает.
Как компьютеры «видят» изображения
В предыдущей главе вы узнали о том, как компьютер «читает» текст. В этом разделе вы узнаете, как компьютеры «видят» изображения, а также получите представление о том, как методы глубокого обучения применяются в области компьютерного зрения.
На рис. 12.5 показано, как простое изображение в градациях серого – написанная от руки цифра – воспринимается компьютером[133]. Каждый пиксел изображения был преобразован в значение в диапазоне от 0 (белый цвет) до 255 (черный цвет), который включает все оттенки серого. На рис. 12.5 показано изображение размером 8 на 8 пикселов с низким разрешением, представленное в виде матрицы с 64 значениями в диапазоне от 0 до 255. Люди видят написанную от руки цифру слева, а компьютер – электронную таблицу с числами, показанную в середине.
Теперь представьте себе базу данных, включающую несколько тысяч примеров – рукописных цифр от 0 до 9, отличающихся стилем написания. Люди, включая детей, способны прочитать и распознать эти цифры без особых усилий. Но как компьютер может осуществить классификацию изображений?
Рис. 12.5. Здесь показано, как изображение в градациях серого «воспринимается» компьютером и как эти данные подаются на вход глубокой нейронной сети. Более темные оттенки в выходном слое указывают на наиболее вероятное предположение
Мы могли бы применить к этому набору данных алгоритм глубокого обучения, способный обучаться на тысячах рукописных цифр. Нейроны скрытого слоя могли бы «активироваться» в том случае, если, скажем, в цифре присутствовала петля (0, 6, 8 или 9), вертикальная (1, 4) или горизонтальная линия (2, 4, 7) или их комбинация.
Здесь мы снова схитрили, чтобы дать вам представление о том, что могут представлять нейроны. Однако, как уже говорилось, скрытые слои зачастую очень трудно интерпретировать, и они могут создавать представления, не имеющие непосредственно воспринимаемого смысла. Но концептуальная идея остается прежней. Внутренние нейроны действительно способны выявлять закономерности в написании цифр, но они имеют только математический, а не визуальный смысл.
Сверточные нейронные сети
Теперь давайте рассмотрим более продвинутый способ анализа изображений с помощью сверточных нейронных сетей, которые используются исследователями для построения систем классификации цветных и крупных изображений, состоящих из большого количества пикселов.
Мы начнем с объяснения того, как компьютер «видит» цветное изображение. Каждый пиксел цветного цифрового изображения состоит из трех цветов – красного, зеленого и синего. Мы называем их цветовыми каналами. Красный канал содержит матрицу значений от 0 (красный отсутствует) до 255 (красный); то же самое касается зеленого и синего каналов. Таким образом, вместо одной матрицы чисел мы имеем три, как показано на рис. 12.6.
Рис. 12.6. Цветные изображения представлены в виде трехмерных матриц, содержащих значения пикселов красного, зеленого и синего цветов
Соответственно, 10-мегапиксельное изображение будет содержать 30 миллионов значений (значение красного, синего и зеленого цветов для каждого из 10 миллионов пикселов). И если эти 30 миллионов входных данных будут поданы на вход нейронной сети со скрытым слоем, состоящим из 1000 нейронов, то вашему компьютеру потребуется изучить целых 30 миллиардов весовых параметров[134]. Если у вас нет доступа к самому мощному в мире суперкомпьютеру (и даже если бы он у вас был), вам лучше придумать более эффективный способ решения этой задачи.
Исследователи и специалисты по глубокому обучению делают это с помощью процесса, называемого сверткой. Свертка – это математический аналог анализа изображения с помощью ряда увеличительных стекол, каждое из которых предназначено для разных целей. Перемещая увеличительное стекло по изображению слева направо и сверху вниз, вы заметите множество локальных паттернов: линий, углов, закругленных краев, текстур и так далее (рис. 12.7). Свертка осуществляет это математически, то есть выполняет вычисления с использованием локализованного набора значений пикселов, находя края (например, значения 0 рядом с большими значениями) и другие паттерны. Затем она «объединяет» их для нахождения наиболее выразительных отличительных черт, чтобы уменьшить количество участвующих в процессе чисел.
Рис. 12.7. Процесс свертки подобен использованию серии увеличительных стекол для выявления различных форм на изображении, которые подаются в скрытые слои нейронной сети для классификации
После обнаружения локальных паттернов (вроде горизонтальных или диагональных краев) с помощью свертки нейроны скрытого слоя начинают соединять важные края (в математическом смысле) и отфильтровывать информацию, не имеющую отношения к целевому выходу. При этом данные обрабатываются так, что сеть научается определять, есть ли на фотографии дети, а также находить различия в лицах. А в случае с беспилотными автомобилями – отличать припаркованные автомобили от движущихся, пешеходов от строителей, а знак «стоп» от знака «уступи дорогу».
Процесс свертки не только уменьшает количество значений, поступающих в уже знакомую вам структуру нейронной сети (никто не захочет вычислять миллиарды параметров, если этого можно избежать), но и «ищет» похожие признаки на изображениях. В отличие от структурированных наборов данных, признаки в которых имеют фиксированное местоположение в столбцах, признаки на изображениях необходимо не только проанализировать, но и обнаружить. Именно поэтому алгоритмы социальных сетей способны находить ваше лицо на изображении независимо от того, где вы прячетесь.
Глубокое обучение для обработки языка и последовательностей
Глубокое обучение также способствовало прорывам в сфере обработки языка и последовательностей благодаря использованию структуры, называемой рекуррентной нейронной сетью. Как вы помните из предыдущей главы, традиционные методы анализа текста оказываются неэффективными по причине игнорирования порядка слов, которые просто помещаются в «мешок слов».
Но порядок слов имеет большое значение. Рассмотрим следующие два предложения со словом «апельсиновый». Можете ли вы предсказать последнее слово в каждом из них?
Рис. 12.8. Простое представление рекуррентной нейронной сети
1. За завтраком я люблю пить апельсиновый __________.
2. Мой двоюродный брат живет в калифорнийском