СЛОИ ПАКЕТНОЙ НОРМАЛИЗАЦИИ
PACKAGE NORMALIZATION LAYERS

УРОВЕНЬ ТЕХНИКИ
Данное описание изобретения относится к обработке входов посредством слоев нейронных сетей для генерирования выходов.
Нейронные сети представляют собой модели машинного обучения, которые применяют один или несколько слоев нелинейных блоков для предсказания выхода для принятого входа. Некоторые нейронные сети включают в себя один или несколько скрытых слоев в дополнение к выходному слою. Выход каждого скрытого слоя используется в качестве входа для последующего слоя в сети, т.е. последующего скрытого слоя или выходного слоя. Каждый слой сети генерирует выход из принятого входа в соответствии с текущими значениями соответствующего набора параметров.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
В общем случае, один инновационный аспект объекта патентования, описанного в данном описании изобретения, может быть воплощен в системе нейронной сети, осуществляемой одним или несколькими компьютерами, которые включают в себя слой пакетной нормализации между первым слоем нейронной сети и вторым слоем нейронной сети, причем первый слой нейронной сети генерирует выходы первого слоя, имеющие множество компонентов, где слой пакетной нормализации выполнен с возможностью, во время обучения системы нейронной сети на пакете примеров обучения: приема соответствующего выхода первого слоя для каждого примера обучения в пакете; вычисления множества статистических данных нормализации для пакета из выходов первого слоя; нормализации каждого компонента каждого выхода первого слоя, используя статистические данные нормализации, для генерирования соответствующего нормализованного выхода слоя для каждого примера обучения в пакете; генерирования соответствующего выхода слоя пакетной нормализации для каждого из примеров обучения из нормализованных выходов слоя; и предоставления выхода слоя пакетной нормализации в качестве входа второму слою нейронной сети.
То, что система из одного или нескольких компьютеров конфигурируется на выполнение конкретных операций или действий, означает, что система установила на них программное обеспечение, программно-аппаратное обеспечение, аппаратное обеспечение или их комбинацию, которые при работе вызывают выполнение системой операций или действий. То, что одна или несколько компьютерных программ конфигурируются на выполнение конкретных операций или действий, означает, что одна или несколько программ включают в себя инструкции, которые, когда они исполняются аппаратом обработки данных, вызывают выполнение аппаратом операций или действий.
Конкретные варианты осуществления объекта патентования, описанные в данном описании изобретения, могут быть осуществлены для реализации одного или нескольких следующих преимуществ. Система нейронной сети, которая включает в себя один или несколько слоев пакетной нормализации, может обучаться более быстро, чем другая идентичная нейронная сеть, которая не включает в себя никакого слоя пакетной нормализации. Например, посредством включения одного или нескольких слоев пакетной нормализации в систему нейронной сети могут быть уменьшены проблемы, вызываемые распределением входов данного слоя, изменяющихся во время обучения. Это может предоставлять возможность эффективного использования более высоких скоростей обучения во время обучения и может уменьшить влияние того, как параметры инициализируются в процессе обучения. Кроме того, во время обучения слои пакетной нормализации могут действовать в качестве регуляризатора и могут уменьшить потребность в других методах регуляризации, например, метод прореживания, применяемых во время обучения. Если она обучена, система нейронной сети, которая включает в себя один слой нормализации, может генерировать выходы нейронной сети, которые такие же точные, если не более точные, чем выходы нейронной сети, генерируемые другой идентичной системой нейронной сети.
Подробности одного или нескольких вариантов осуществления объекта патентования данного описания изобретения излагаются на прилагаемых чертежах и в описании ниже. Другие признаки, аспекты и преимущества объекта патентования станут очевидны из описания, чертежей и формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг.1 изображает примерную систему нейронной сети.
Фиг.2 представляет собой блок-схему последовательности операций примерного процесса для обработки входа, используя слой пакетной нормализации во время обучения системы нейронной сети.
Фиг.3 представляет собой блок-схему последовательности операций примерного процесса для обработки входа, используя пакетную нормализацию после того, как система нейронной сети была обучена.
Подобные ссылочные позиции и обозначения на различных чертежах указывают подобные элементы.
ПОДРОБНОЕ ОПИСАНИЕ
В данном описании изобретения описывается система нейронной сети, осуществленная в виде компьютерных программ на одном или нескольких компьютерах в одном или нескольких расположениях, которая включает в себя слой пакетной нормализации.
Фиг.1 изображает примерную систему 100 нейронной сети. Система 100 нейронной сети является примером системы, осуществленной в виде компьютерных программ на одном или нескольких компьютерах в одном или нескольких расположениях, в которой могут быть осуществлены системы, компоненты и методы, описанные ниже.
Система 100 нейронной сети включает в себя многочисленные слои нейронной сети, которые расположены последовательно от самого нижнего слоя в последовательности до самого высокого слоя в последовательности. Система нейронной сети генерирует выходы нейронной сети из входов нейронной сети посредством обработки входов нейронной сети каждым из слоев в последовательности.
Система 100 нейронной сети может быть выполнена с возможностью приема любого вида входа цифровых данных и генерирования любого вида выхода оценки или классификации на основе входа.
Например, если входами в систему 100 нейронной сети являются изображения или признаки, которые были извлечены из изображений, выходом, генерируемым системой 100 нейронной сети для данного изображения, могут быть оценки для каждого набора категорий объекта, причем каждая оценка представляет оценку функции правдоподобия, что изображение содержит изображение объекта, принадлежащего категории.
В качестве другого примера, если входами в систему 100 нейронной сети являются ресурсы Интернета (например, веб-страницы), документы или части документов или признаки, извлеченные из ресурсов Интернета, документов или частей документов, выходом, генерируемым системой 100 нейронной сети для данного ресурса Интернета, документа или части документа, может быть оценка для каждого набора тем, причем каждая оценка представляет оценку функции правдоподобия, что ресурс Интернета, документ или часть документа относится к этой теме.
В качестве другого примера, если входами в систему 100 нейронной сети являются признаки контекста впечатления для конкретной рекламы, выходом, генерируемым системой 100 нейронной сети, может быть оценка, которая представляет оценку функции правдоподобия, что конкретная реклама будет выбрана мышью.
В качестве другого примера, если входами в систему 100 нейронной сети являются признаки персонализированной рекомендации для пользователя, например, признаки, характеризующие контекст для рекомендации, например, признаки, характеризующие предыдущие действия, выполненные пользователем, выходом, генерируемым системой 100 нейронной сети, может быть оценка для каждого набора элементов контента, причем оценка представляет оценку функции правдоподобия, что пользователь ответит одобрительно на рекомендацию элемента контента.
В качестве другого примера, если входом в систему 100 нейронной сети является текст на одном языке, выходом, генерируемым системой 100 нейронной сети, может быть оценка для каждого набора частей текста на другом языке, причем каждая оценка представляет оценку функции правдоподобия, что часть текста на другом языке представляет собой надлежащий перевод введенного текста на другой язык.
В качестве другого примера, если входом в систему 100 нейронной сети является произнесенный фрагмент речи, последовательность произнесенных фрагментов речи или признаки, извлеченные из одного из этих двух, выходом, генерируемым системой 100 нейронной сети, может быть оценка для каждого набора частей текста, причем каждая оценка представляет оценку функции правдоподобия, что часть текста представляет собой корректную запись для фрагмента речи или последовательности фрагментов речи.
В качестве другого примера, система 100 нейронной сети может представлять собой часть системы автозавершения или часть системы обработки текста.
В качестве другого примера, система 100 нейронной сети может представлять собой часть системы стимулированного обучения и может генерировать выходы, используемые для выбора действий, подлежащих выполнению агентом, взаимодействующим с окружающей средой.
В частности, каждый из слоев нейронной сети выполнен с возможностью приема входа и генерирования выхода из входа, и слои нейронной сети вместе обрабатывают входы нейронной сети, принимаемые системой 100 нейронной сети, для генерирования соответствующего выхода нейронной сети для каждого принятого входа нейронной сети. Некоторые или все из слоев нейронной сети в последовательности генерируют выходы из входов в соответствии с текущими значениями набора параметров для слоя нейронной сети. Например, некоторые слои могут умножать принятый вход на матрицу текущих значений параметра как часть генерирования выхода из принятого входа.
Система 100 нейронной сети также включает в себя слой 108 пакетной нормализации между слоем A 104 нейронной сети и слоем B 112 нейронной сети в последовательности слоев нейронной сети. Слой 108 пакетной нормализации выполнен с возможностью выполнения одного набора операций над входами, принимаемыми от слоя A 104 нейронной сети во время обучения системы 100 нейронной сети, и другого набора операций над входами, принимаемыми от слоя A 104 нейронной сети после того, как система 100 нейронной сети была обучена.
В частности, система 100 нейронной сети может обучаться по многочисленным пакетам примеров обучения для определения обученных значений параметров слоев нейронной сети. Пакетом примеров обучения является набор многочисленных примеров обучения. Например, во время обучения система 100 нейронной сети может обрабатывать пакет примеров 102 обучения и может генерировать соответствующий выход нейронной сети для каждого примера обучения в пакете 102. Выходы нейронной сети затем могут использоваться для корректировки значений параметров слоев нейронной сети в последовательности, например, посредством обычных методов обучения нейронной сети по алгоритму градиентного спуска и обратного распространения ошибки обучения.
Во время обучения системы 100 нейронной сети на данном пакете примеров обучения, слой 108 пакетной нормализации выполняется с возможностью приема выходов 106 слоя A, генерируемых слоем A 104 нейронной сети для примеров обучения в пакете, обработки выходов 106 слоя A для генерирования соответствующего выхода 110 слоя пакетной нормализации для каждого примера обучения в пакете и затем предоставления выходов 110 слоя пакетной нормализации в качестве входа слою B 112 нейронной сети. Выходы 106 слоя A включают в себя соответствующий выход, генерируемый слоем A 104 нейронной сети для каждого примера обучения в пакете. Аналогично, выходы 110 слоя пакетной нормализации включают в себя соответствующий выход, генерируемый слоем 108 пакетной нормализации для каждого примера обучения в пакете.
Как правило, слой 108 пакетной нормализации вычисляет набор статистических данных нормализации для пакета из выходов 106 слоя A, нормализует выходы 106 слоя A для генерирования соответствующего нормализованного выхода для каждого примера обучения в пакете, и, необязательно, преобразует каждый из нормализованных выходов перед предоставлением выходов в качестве входа слою B 112 нейронной сети.
Статистические данные нормализации, вычисляемые слоем 108 пакетной нормализации, и способ, которым слой 108 пакетной нормализации нормализует выходы 106 слоя A во время обучения, зависят от природы слоя A 104 нейронной сети, который генерирует выходы 106 слоя A.
В некоторых случаях, слой A 104 нейронной сети представляет собой слой, который генерирует выход, который включает в себя многочисленные компоненты, индексированные по размерности. Например, слоем A 104 нейронной сети может быть полностью подключенный слой нейронной сети. В некоторых других случаях, однако, слой A 104 нейронной сети представляет собой сверточный слой или слой нейронной сети другого вида, который генерирует выход, который включает в себя многочисленные компоненты, каждый из которых индексируется как индексом признака, так и индексом пространственного расположения. Генерирование выхода слоя пакетной нормализации во время обучения системы 100 нейронной сети в каждом из двух случаев более подробно описано ниже с ссылкой на фиг.2.
Если система 100 нейронной сети была обучена, система 100 нейронной сети может принимать новый вход нейронной сети для обработки и может обрабатывать вход нейронной сети слоями нейронной сети для генерирования нового выхода нейронной сети для входа в соответствии с обученными значениями параметров компонентов системы 100 нейронной сети. Операции, выполняемые слоем 108 пакетной нормализации во время обработки нового входа нейронной сети, также зависят от природы слоя A 104 нейронной сети. Обработка нового входа нейронной сети после того, как была обучена система 100 нейронной сети, более подробно описывается ниже с ссылкой на фиг.3.
Слой 108 пакетной нормализации может включаться в различные расположения в последовательности слоев нейронной сети, и, в некоторых осуществлениях, в последовательность могут включаться многочисленные слои пакетной нормализации.
В примере на фиг.1, в некоторых осуществлениях, слой A 104 нейронной сети генерирует выходы посредством модифицирования входов в слой в соответствии с текущими значениями набора параметров для первого слоя нейронной сети, например, посредством умножения входа в слой на матрицу текущих значений параметров. В этих осуществлениях, слой B 112 нейронной сети может принимать выход от слоя 108 пакетной нормализации и может генерировать выход применением нелинейной операции, т.е. нелинейной функции активации, к выходу слоя пакетной нормализации. Таким образом, в этих осуществлениях, слой 108 пакетной нормализации вставляется в обычный слой нейронной сети, и операции обычного слоя нейронной сети разделяются между слоем A 104 нейронной сети и слоем B 112 нейронной сети.
В некоторых других осуществлениях, слой A 104 нейронной сети генерирует выходы модифицированием входов слоя в соответствии с текущими значениями набора параметров для генерирования модифицированных входов первого слоя и затем применением нелинейной операции к модифицированным входам первого слоя перед предоставлением выхода слою 108 пакетной нормализации. Таким образом, в этих осуществлениях, слой 108 пакетной нормализации вставляется после обычного слоя нейронной сети в последовательности.
Фиг.2 представляет собой блок-схему последовательности операций примерного процесса 200 для генерирования выхода слоя пакетной нормализации во время обучения нейронной сети на пакете примеров обучения. Для удобства, процесс 200 описывается как выполняемый системой из одного или нескольких компьютеров, расположенных в одном или нескольких расположениях. Например, слой пакетной нормализации, включенный в систему нейронной сети, например, слой 108 пакетной нормализации, включенный в систему 100 нейронной сети по фиг.1, программированную соответствующим образом, может выполнять процесс 200.
Слой пакетной нормализации принимает выходы более нижнего слоя для пакета примеров обучения (этап 202). Выходы более нижнего слоя включают в себя соответствующий выход, генерируемый для каждого примера обучения в пакете слоем ниже слоя пакетной нормализации в последовательности слоев нейронной сети.
Слой пакетной нормализации генерирует соответствующий нормализованный выход для каждого примера обучения в пакете (этап 204). Т.е. слой пакетной нормализации генерирует соответствующий нормализованный выход из каждого принятого выхода более нижнего слоя.
В некоторых случаях, слоем ниже слоя пакетной нормализации является слой, который генерирует выход, который включает в себя многочисленные компоненты, индексированные по размерности.
x
k
i-
k
,
i
В этих случаях, слой пакетной нормализации вычисляет, для каждой размерности, математическое ожидание и стандартное отклонение компонентов выходов более нижнего слоя, которые соответствуют размерности. Затем слой пакетной нормализации нормализует каждый компонент каждого выхода более нижнего слоя, используя математическое ожидание и стандартное отклонение, для генерирования соответствующего нормализованного выхода для каждого из примеров обучения в пакете. В частности, для данного компонента данного выхода, слой пакетной нормализации нормализует компонент, используя математическое ожидание и стандартное отклонение, вычисленные для размерности, соответствующей компоненту. Например, в некоторых осуществлениях, для компонента , соответствующего -ой размерности го выхода более нижнего слоя из пакета β, нормализованный выход  удовлетворяет:
μ
k
σ
k
σ
ε
σ
k
B
B
B
B
2
1/2
2
где  представляет собой математическое ожидание компонентов, соответствующих -ой размерности выходов более нижнего слоя в пакете β, и  представляет собой стандартное отклонение компонентов, соответствующих -ой размерности выходов более нижнего слоя в пакете β. В некоторых осуществлениях, стандартным отклонением является численно устойчивое стандартное отклонение, которое равно (+), где ε представляет собой постоянное значение, и  представляет собой дисперсию компонентов, соответствующих -ой размерности выходов более нижнего слоя в пакете β.
В некоторых других случаях, однако, слоем нейронной сети ниже слоя пакетной нормализации является сверточный слой или слой нейронной сети другого вида, который генерирует выход, который включает в себя многочисленные компоненты, каждый из которых индексируется как индексом признака, так и индексом пространственного расположения.
В некоторых из этих случаев, слой пакетной нормализации вычисляет, для каждой возможной комбинации индекса признака и индекса пространственного расположения, математическое ожидание и дисперсию компонентов выходов более нижнего слоя, которые имеют этот индекс признака и индекс пространственного расположения. Затем слой пакетной нормализации вычисляет, для каждого индекса признака, усредненные значения математических ожиданий для комбинаций индекса признака и индекса пространственного расположения, которые включают в себя индекс признака. Слой пакетной нормализации также вычисляет, для каждого индекса признака, усредненное значение дисперсий для комбинаций индекса признака и индекса пространственного расположения, которые включают в себя индекс признака. Таким образом, после вычисления усредненных значений, слой пакетной нормализации вычислит статистические данные математического ожидания для каждого признака по всем пространственным расположениям и статистические данные дисперсии для каждого признака по всем пространственным расположениям.
Затем слой пакетной нормализации нормализует каждый компонент каждого из выходов более нижнего слоя, используя усредненные математические ожидания и усредненные дисперсии, для генерирования соответствующего нормализованного выхода для каждого из примеров обучения в пакете. В частности, для данного компонента данного выхода, слой пакетной нормализации нормализует компонент, используя усредненное математическое ожидание и усредненную дисперсию для индекса признака, соответствующего компоненту, например, аналогично тому, как описано выше, когда слой ниже слоя пакетной нормализации генерирует выходы, индексированные по размерности.
В других из этих случаев, слой пакетной нормализации вычисляет, для каждого индекса признака, математическое ожидание и дисперсию компонентов выходов более нижнего слоя, которые соответствуют индексу признака, т.е. которые имеют этот индекс признака.
Затем слой пакетной нормализации нормализует каждый компонент каждого из выходов более нижнего слоя, используя математические ожидания и дисперсии для индексов признака, для генерирования соответствующего нормализованного выхода для каждого из примеров обучения в пакете. В частности, для данного компонента данного выхода, слой пакетной нормализации нормализует компонент, используя математическое ожидание и дисперсию для индекса признака, соответствующего компоненту, например, аналогично тому, как описано выше, когда слой ниже слоя пакетной нормализации генерирует выходы, индексированные по размерности.
Необязательно, что слой пакетной нормализации преобразует каждый компонент каждого нормализованного выхода (этап 206).
y
k
,
i
В случаях, когда слоем ниже слоя пакетной нормализации является слой, который генерирует выход, который включает в себя многочисленные компоненты, индексированные по размерности, слой пакетной нормализации преобразует, для каждой размерности, компонент каждого нормализованного выхода в размерности в соответствии с текущими значениями набора параметров для размерности. Т.е. слой пакетной нормализации поддерживает актуальность соответствующего набора параметров для каждой размерности и использует эти параметры для применения преобразования к компонентам нормализованных выходов в размерности. Значения наборов параметров корректируются как часть обучения системы нейронной сети. Например, в некоторых осуществлениях, преобразованный нормализованный выход , генерируемый из нормализованного выхода , удовлетворяет:
γ
k
k
k
где  и A представляют собой параметры для -ой размерности.
В случаях, когда слоем ниже слоя пакетной нормализации является сверточный слой, слой пакетной нормализации преобразует, для каждого компонента каждого из нормализованных выходов, компонент в соответствии с текущими значениями набора параметров для индекса признака, соответствующего компоненту. Т.е. слой пакетной нормализации поддерживает актуальность соответствующего набора параметров для каждого индекса признака и использует эти параметры для применения преобразования к компонентам нормализованных выходов, которые имеют этот индекс признака, например, аналогично тому, как описано выше, когда слой ниже слоя пакетной нормализации генерирует выходы, индексированные по размерности. Значения наборов параметров корректируются как часть обучения системы нейронной сети.
Слой пакетной нормализации предоставляет нормализованные выходы или преобразованные нормализованные выходы в качестве входа слою выше слоя пакетной нормализации в последовательности (этап 208).
После того как нейронная сеть сгенерирует выходы нейронной сети для примеров обучения в пакете, статистические данные нормализации распространяются обратно как часть корректировки значений параметров нейронной сети, т.е. как часть выполнения метода обучения по алгоритму обратного распространения ошибки обучения.
Фиг.3 представляет собой блок-схему последовательности операций примерного процесса 300 для генерирования выхода слоя пакетной нормализации для нового входа нейронной сети после того, как нейронная сеть будет обучена. Для удобства, процесс 300 описывается как выполняемый системой из одного или нескольких компьютеров, расположенных в одном или нескольких расположениях. Например, слой пакетной нормализации, включенный в систему нейронной сети, например, слой 108 пакетной нормализации, включенный в систему 100 нейронной сети по фиг.1, запрограммированную соответствующим образом, может выполнять процесс 300.
Слой пакетной нормализации принимает выход более нижнего слоя для нового входа нейронной сети (этап 302). Выход более нижнего слоя представляет собой выход, генерируемый для нового входа нейронной сети слоем ниже слоя пакетной нормализации в последовательности слоев нейронной сети.
Слой пакетной нормализации генерирует нормализованный выход для нового входа нейронной сети (этап 304).
Если выходы, генерируемые слоем ниже слоя пакетной нормализации, индексируются по размерности, слой пакетной нормализации нормализует каждый компонент выхода более нижнего слоя, используя предварительные вычисленные математические ожидания и стандартные отклонения для каждой размерности, для генерирования нормализованного выхода. В некоторых случаях, математические ожидания и стандартные отклонения для данной размерности вычисляются из компонентов в размерности всех выходов, сгенерированных слоем ниже слоя пакетной нормализации во время обучения системы нейронной сети.
В некоторых других случаях, однако, математические ожидания и стандартные отклонения для данной размерности вычисляются из компонентов в размерности выходов более нижнего слоя, сгенерированных слоем ниже слоя пакетной нормализации после обучения, например, из выходов более нижнего слоя, сгенерированных во время самого последнего временного окна заданной длительности или из заданного количества выходов более нижнего слоя, наиболее недавно сгенерированных слоем ниже слоя пакетной нормализации.
В частности, в некоторых случаях распределение входов сети и, следовательно, распределение выходов более нижних слоев может меняться между примерами обучения, используемыми во время обучения, и новыми входами нейронной сети, используемыми после того, как система нейронной сети будет обучена, например, если новые входы нейронной сети являются входами другого вида из примеров обучения. Например, система нейронной сети могла быть обучена на изображениях пользователя и теперь может использоваться для обработки видеокадров. Изображения пользователя и видеокадры вероятно имеют разные распределения в отношении представляемых категорий, свойств изображения, композиции и т.п. Поэтому, нормализация входов более нижнего слоя, используя статистические данные из обучения, может не точно захватывать статистические данные выходов более нижнего слоя, генерируемых для новых входов. Таким образом, в этих случаях, слой пакетной нормализации может использовать статистические данные нормализации, вычисленные из выходов более нижнего слоя, сгенерированных слоем ниже слоя пакетной нормализации после обучения.
Если выходы, сгенерированные слоем ниже слоя пакетной нормализации, индексируются индексом признака и индексом пространственного расположения, слой пакетной нормализации нормализует каждый компонент выхода более нижнего слоя, используя предварительно вычисленные усредненные математические ожидания и усредненные дисперсии для каждого из индексов признака, для генерирования нормализованного выхода. В некоторых случаях, как описано выше, усредненные математические ожидания и усредненные дисперсии для данного индекса признака вычисляются из выходов, сгенерированных слоем ниже слоя пакетной нормализации для всех примеров обучения, используемых во время обучения. В некоторых других случаях, как описано выше, математические ожидания и стандартные отклонения для данного индекса признака вычисляются из выходов более нижнего слоя, сгенерированных слоем ниже слоя пакетной нормализации после обучения.
Необязательно, что слой пакетной нормализации преобразует каждый компонент нормализованного выхода (этап 306).
Если выходы, сгенерированные слоем ниже слоя пакетной нормализации, индексируются по размерности, слой пакетной нормализации преобразует, для каждой размерности, компонент нормализованного выхода в размерности в соответствии с обученными значениями набора параметров для размерности. Если выходы, сгенерированные слоем ниже слоя пакетной нормализации, индексируются индексом признака и индексом пространственного расположения, слой пакетной нормализации преобразует каждый компонент нормализованного выхода в соответствии с обученными значениями набора параметров для индекса признака, соответствующего компоненту. Слой пакетной нормализации предоставляет нормализованный выход или преобразованный нормализованный выход в качестве входа слою выше слоя пакетной нормализации в последовательности (этап 308).
Варианты осуществления объекта патентования и функциональные операции, описанные в данном описании изобретения, могут быть осуществлены в цифровой электронной схеме, в материально-воплощенном компьютерном программном обеспечении или программно-аппаратном обеспечении, в компьютерном аппаратном обеспечении, включающем в себя конструкции, описанные в данном описании изобретения, и их конструктивные эквиваленты, или в комбинации из одного или нескольких из них. Варианты осуществления объекта патентования, описанные в данном описании изобретения, могут быть осуществлены в виде одной или нескольких компьютерных программ, т.е. одного или нескольких модулей инструкций компьютерной программы, закодированных на материальном долговременном носителе программ для исполнения или для управления работой аппарата обработки данных. Альтернативно или дополнительно, инструкции программы могут кодироваться на искусственно сгенерированном распространяемом сигнале, например, на сгенерированном машиной электрическом, оптическом или электромагнитном сигнале, который генерируется для кодирования информации для передачи на подходящий аппарат приемника для исполнения аппаратом обработки данных. Компьютерным запоминающим носителем может быть машинно-считываемое запоминающее устройство, машинно-считываемая запоминающая подложка, устройство памяти с произвольным доступом или с последовательным доступом или комбинация из одного или нескольких из них.
Термин «аппарат обработки данных» охватывает все виды аппаратов, устройств и машин для обработки данных, включая, в качестве примера, программируемый процессор, компьютер или многочисленные процессоры или компьютеры. Аппарат может включать в себя логическую схему специального назначения, например, FPGA (программируемая вентильная матрица) или ASIC (специализированная интегральная схема). Аппарат также может включать в себя, в дополнение к аппаратному обеспечению, код, который создает среду исполнения для рассматриваемой компьютерной программы, например, код, который составляет программно-аппаратное обеспечение процессора, стек протоколов, систему управления базой данных, операционную систему или комбинацию из одного или нескольких из них.
Компьютерная программа (которая также может упоминаться или описываться как программа, программное обеспечение, приложение программного обеспечения, модуль, модуль программного обеспечения, сценарий или код) может быть написана на языке программирования любого вида, включая компилируемые или интерпретируемые языки, или декларативные или процедурные языки, и может быть развернута в любом виде, включая в виде автономной программы или в виде модуля, компонента, подпрограммы или другого блока, подходящего для использования в вычислительной среде. Компьютерная программа может, но необязательно, соответствовать файлу в файловой системе. Программа может храниться в части файла, который содержит другие программы или данные, например, один или несколько сценариев, хранимых в документе на языке разметки, в единственном файле, выделенном для рассматриваемой программы, или в многочисленных скоординированных файлах, например, файлах, которые хранят один или несколько модулей, подпрограмм или частей кода. Компьютерная программа может быть развернута для исполнения на одном компьютере или на многочисленных компьютерах, которые располагаются на одном узле или распределяются по многочисленным узлам и соединяются между собой сетью связи.
Процессы и логические потоки, описанные в данном описании изобретения, могут выполняться одним или несколькими программируемыми компьютерами, исполняющими одну или несколько компьютерных программ для выполнения функций посредством работы с данными входа и генерирования выхода. Процессы и логические потоки также могут выполняться посредством, и аппарат также может осуществляться в виде, логической схемы специального назначения, например, FPGA (программируемой вентильной матрицы) или ASIC (специализированной интегральной схемы).
Компьютеры, подходящие для исполнения компьютерной программы, включают в себя, в качестве примера, могут быть основаны на микропроцессорах общего или специального назначения или на обоих, или любом другом виде центрального блока обработки. Как правило, центральный блок обработки принимает инструкции и данные от постоянного запоминающего устройства или оперативного запоминающего устройства или от обоих. Существенными элементами компьютера являются центральный блок обработки для выполнения или исполнения инструкций и одно или несколько устройств памяти для хранения инструкций и данных. Как правило, компьютер также включает в себя, или функционально связан для приема данных или передачи данных, или для обоих, с одним или несколькими массовыми запоминающими устройствами для хранения данных, например, магнитными, магнитооптическими дисками или оптическими дисками. Однако компьютеру нет необходимости иметь такие устройства. Кроме того, компьютер может быть встроен в другое устройство, например, мобильный телефон, персональный цифровой помощник (PDA), мобильный аудио- или видео-плеер, игровую консоль, приемник системы глобального позиционирования (GPS) или портативное запоминающее устройство, например, флэш-накопитель универсальной последовательной шины (USB), например.
Считываемые компьютером носители, подходящие для хранения инструкций компьютерных программ и данных, включают в себя все виды энергонезависимой памяти, носителей и устройства памяти, включая, в качестве примера, устройства полупроводниковой памяти, например, стираемое программируемое постоянное запоминающее устройство (EPROM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM) и устройства флэш-памяти; магнитные диски, например, внутренние жесткие диски или съемные диски; магнитооптические диски; и компакт-диски (CD-ROM) и цифровые многофункциональные диски без возможности перезаписи (DVD-ROM). Процессор и память могут быть дополнены логическими схемами специального назначения или могут быть встроены в них.
Для обеспечения взаимодействия с пользователем варианты осуществления объекта патентования, описанные в данном описании изобретения, могут быть осуществлены на компьютере, имеющем устройство отображения, например, монитор на электронно-лучевой трубке (CRT) или жидкокристаллический (LCD) монитор, для отображения информации пользователю, и клавиатуру и указательное устройство, например, мышь или трекбол, посредством которого пользователь может обеспечивать ввод в компьютер. Другие виды устройств также могут использоваться для обеспечения взаимодействия с пользователем; например, обратная связь, обеспечиваемая с пользователем, может представлять собой любой вид сенсорной обратной связи, например, визуальная обратная связь, слуховая обратная связь или тактильная обратная связь; и ввод от пользователя может приниматься в любом виде, включая акустический, речевой или тактильный ввод. Кроме того, компьютер может взаимодействовать с пользователем посредством посылки документов на устройство и приема документов от него, которое используется пользователем; например, посредством посылки веб-страниц в веб-браузер на клиентском устройстве пользователя в ответ на запросы, принимаемые от веб-браузера.
Варианты осуществления объекта патентования, описанные в данном описании изобретения, могут быть осуществлены в вычислительной системе, которая включает в себя серверный компонент, например, сервер данных, или который включает в себя связующий компонент, например, сервер приложений, или который включает в себя клиентский компонент, например, клиентский компьютер, имеющий графический пользовательский интерфейс или веб-браузер, посредством которого пользователь может взаимодействовать с осуществлением объекта патентования, описанного в данном описании изобретения, или любую комбинацию из одного или нескольких таких серверных, связующих или клиентских компонентов. Компоненты системы могут соединяться между собой любым видом или средой для передачи цифровых данных, например, сетью передачи данных. Примеры сетей передачи данных включают в себя локальную сеть (LAN) и глобальную сеть (WAN), например, Интернет.
Вычислительная система может включать в себя клиенты и серверы. Клиент и сервер, как правило, удалены друг от друга и обычно взаимодействуют посредством сети передачи данных. Взаимосвязь клиента и сервера происходит посредством компьютерных программ, выполняющихся на соответствующих компьютерах и имеющих взаимосвязь клиент-сервер друг с другом.
Хотя данное описание изобретения содержит многочисленные конкретные подробности осуществления, они не должны толковаться как ограничения объема любого изобретения или того, что может быть заявлено, но скорее как описания признаков, которые могут быть характерными для конкретных вариантов осуществления конкретных изобретений. Некоторые признаки, которые описываются в данном описании изобретения в контексте отдельных вариантов осуществления, также могут осуществляться в комбинации в единственном варианте осуществления. И наоборот, различные признаки, которые описываются в контексте единственного варианта осуществления, также могут быть осуществлены в многочисленных вариантах осуществления отдельно или в любой подходящей субкомбинации. Кроме того, хотя признаки могут описываться выше как действующие в некоторых комбинациях и даже первоначально заявлены как таковыми, один или несколько признаков из заявленной комбинации в некоторых случаях могут быть исключены из комбинации, и заявленная комбинация может относиться к субкомбинации или разновидности субкомбинации.
Аналогично, хотя операции на чертежах описываются в конкретном порядке, это не должно пониматься как требующее, чтобы такие операции выполнялись в конкретном показанном порядке или в последовательном порядке, или чтобы выполнялись все изображенные операции, для достижения требуемых результатов. В некоторых случаях, может быть полезна многозадачная и параллельная обработка. Кроме того, разделение различных системных модулей и компонентов в вышеописанных вариантах осуществления не должно пониматься как требующее такого разделения во всех вариантах осуществления, и следует понимать, что описанные программные компоненты и системы, как правило, могут интегрироваться вместе в единственный программный продукт или могут комплектоваться в многочисленные программные продукты.
Были описаны конкретные варианты осуществления объекта патентования. Другие варианты осуществления находятся в пределах объема последующей формулы изобретения. Например, действия, изложенные в формуле изобретения, могут выполняться в другом порядке и все же могут достигать требуемых результатов. В качестве одного примера, процессы, изображенные на прилагаемых фигурах, необязательно требуют конкретного показанного порядка или последовательного порядка для достижения требуемых результатов. В некоторых осуществлениях может быть полезной многозадачная и параллельная обработка.