Чтобы визуализировать искусственный нейрон, представьте себе контейнер, в который входят три или больше трубок, подводящих воду. Эти трубки можно уподобить дендритам биологического нейрона. Имеется также трубка аксона для выходящего потока воды. Если уровень воды, поступающей по входным трубкам, достигает определенной отметки, нейрон возбуждается и выбрасывает исходящий поток через трубку-аксон.
Ключевой элемент, превращающий такую конструкцию в полезное вычислительное устройство, — это клапан, встроенный в каждую из входящих трубок, который позволяет управлять поступлением воды. Манипулируя клапанами, можно напрямую регулировать влияние одного нейрона на другой. Процесс обучения нейронной сети решению полезных задач, в сущности, состоит в настройке этих клапанов, так называемых весов, таким образом, чтобы система могла правильно идентифицировать образы.
В глубокой нейронной сети программное моделирование искусственных нейронов, действующих более-менее похоже на такие контейнеры, организовано в нескольких слоях, так чтобы выходной сигнал одного слоя нейронов соединялся с входом следующего слоя. Часто связи между нейронами в соседних слоях устанавливаются случайным образом; напротив, в конкретной нейронной архитектуре, например в сверточной сети для распознавания образов, нейроны соединяются упорядоченно. Сложные нейронные сети могут содержать больше 100 слоев и миллионы искусственных нейронов.
Когда такая сеть построена, ее можно научить выполнять определенные задания, такие как распознавание образов или языковой перевод. Например, чтобы научить нейронную сеть распознавать рукописные цифры, пиксели фотографии написанной цифры должны стать входными сигналами для первого слоя нейронов. Ответ, или, иначе говоря, символ, соответствующий написанной от руки цифре, должен поступить в форме выходных сигналов последнего слоя искусственных нейронов. Обучение сети — это процесс ввода в нее обучающих образцов с последующей подстройкой всех весов в сети с тем, чтобы она постепенно пришла к правильному ответу. После того как веса оптимизированы, сеть можно использовать для обработки новых образцов, не входящих в обучающий комплекс изображений.
Именно при настройке весов таким образом, чтобы сеть в конечном счете могла почти всегда выдавать верный ответ, вступает в действие знаменитый алгоритм обратного распространения. В сложной системе глубокого обучения может насчитываться миллиард и больше связей между нейронами, каждая из которых имеет вес, подлежащий оптимизации. По существу, обратное распространение позволяет настраивать все веса сети одновременно, а не по очереди, что чрезвычайно повышает эффективность вычислений[140]. В процессе обучения выходной сигнал сети сравнивается с правильным ответом и информация, позволяющая соответствующим образом настроить каждый вес, передается обратно через слои нейронов. Без механизма обратного распространения революция в области глубокого обучения была бы невозможна.
Все вышесказанное описывает базовый механизм формирования и обучения нейронной сети с тем, чтобы она могла давать полезные результаты. Остается, однако, без ответа принципиальный вопрос: что именно происходит в системе, когда она «переваривает» данные и выдает ответы — подчас с недоступной человеку точностью?
Вот короткое объяснение: в нейронной сети создается представление знания и уровень абстракции для этого знания растет в каждом следующем ее слое. Это легче всего понять на примере сетей, предназначенных для распознавания визуальных образов. Восприятие образа сетью начинается на уровне пикселей. В последующих нейронных слоях распознаются такие характеристики изображения, как углы, кривые и фактуры. Далее в системе возникают еще более сложные представления. В конце концов понимание образа системой становится настолько полным, что она полностью воспринимает содержание изображения и может его идентифицировать — даже при огромном количестве альтернатив.
Однако если подойти к вопросу шире, то мы на самом деле не знаем, что именно там происходит, по крайней мере это очень трудно описать. Ни один программист не задает уровни абстракции или способ представления знания в сети. Все это происходит само собой, и представление об объекте распределено между миллионами взаимосвязанных искусственных нейронов, активизирующихся в системе. Мы знаем, что сеть в определенном смысле постигает изображение, но очень трудно или даже невозможно точно описать, что именно формируется в ее нейронах, особенно в более глубоких слоях сети или в системах, работающих с плохо поддающимися визуализации типами данных. Эта относительная непрозрачность, а вместе с ней опасение, что глубокие нейросети фактически представляют собой «черные ящики», — одна из главных причин обеспокоенности, к которой мы вернемся в главе 8.