layernorm

Нормируйте данные через все каналы для каждого наблюдения независимо

    Описание

    Операция нормализации слоя нормирует входные данные через все каналы для каждого наблюдения независимо. Чтобы ускорить обучение текущих и многоуровневых perceptron нейронных сетей и уменьшать чувствительность к сетевой инициализации, используйте нормализацию слоя после learnable операций, таких как LSTM и полностью соедините операции.

    После нормализации операция переключает вход learnable смещением β и масштабирует его learnable масштабным коэффициентом γ.

    layernorm функция применяет операцию нормализации слоя к dlarray данные. Используя dlarray объекты делают работу с высокими размерными данными легче, позволяя вам пометить размерности. Например, можно пометить, которому размерности соответствуют пространственный, время, канал, и обрабатывают размерности в пакетном режиме с помощью "S"TC, и "B" метки, соответственно. Для незаданных и других размерностей используйте "U" метка. Для dlarray возразите функциям, которые действуют по конкретным размерностям, можно задать метки размерности путем форматирования dlarray возразите непосредственно, или при помощи DataFormat опция.

    Примечание

    Применять нормализацию слоя в layerGraph объект или Layer массив, используйте layerNormalizationLayer.

    пример

    dlY = layernorm(dlX,offset,scaleFactor) применяет операцию нормализации слоя к входным данным dlX и преобразовывает его с помощью заданного смещения и масштабного коэффициента.

    Функция нормирует по 'S' (пространственный), 'T' (время), 'C' (канал) и 'U' (незаданные) размерности dlX для каждого наблюдения в 'B' (пакетная) размерность, независимо.

    Для бесформатных входных данных используйте 'DataFormat' опция.

    dlY = layernorm(dlX,offset,scaleFactor,'DataFormat',FMT) применяет операцию нормализации слоя к бесформатному dlarray объект dlX с форматом, заданным FMT. Выход dlY бесформатный dlarray объект с размерностями в том же порядке как dlX. Например, 'DataFormat','SSCB' задает данные для 2D входа изображений с форматом 'SSCB' (пространственный, пространственный, канал, пакет).

    Чтобы задать формат шкалы и возместить, используйте 'ScaleFormat' и 'OffsetFormat' опции, соответственно.

    [dlY] = layernorm(___,Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к входным параметрам в предыдущих синтаксисах. Например, 'Epsilon',1e-4 устанавливает значение эпсилона к 1e-4.

    Примеры

    свернуть все

    Создайте отформатированный dlarray объект, содержащий пакет 128 последовательностей длины 100 с 10 каналами. Задайте формат 'CBT' (образуйте канал, обработайте в пакетном режиме, время).

    numChannels = 10;
    miniBatchSize = 128;
    sequenceLength = 100;
    
    X = rand(numChannels,miniBatchSize,sequenceLength);
    dlX = dlarray(X,'CBT');

    Просмотрите размер и формат входных данных.

    size(dlX)
    ans = 1×3
    
        10   128   100
    
    
    dims(dlX)
    ans = 
    'CBT'
    

    Для мудрой каналом нормализации слоя на наблюдение инициализируйте смещение и шкалу с нулевым вектором и единицами, соответственно.

    offset = zeros(numChannels,1);
    scaleFactor = ones(numChannels,1);

    Примените операцию нормализации слоя с помощью layernorm функция.

    dlY = layernorm(dlX,offset,scaleFactor);

    Просмотрите размер и формат выхода dlY.

    size(dlY)
    ans = 1×3
    
        10   128   100
    
    
    dims(dlY)
    ans = 
    'CBT'
    

    Чтобы выполнить поэлементную нормализацию слоя, задайте смещение и масштабный коэффициент с тем же размером как входные данные.

    Создайте отформатированный dlarray объект, содержащий пакет 128 последовательностей длины 100 с 10 каналами. Задайте формат 'CBT' (образуйте канал, обработайте в пакетном режиме, время).

    numChannels = 10;
    miniBatchSize = 128;
    sequenceLength = 100;
    X = rand(numChannels,miniBatchSize,sequenceLength);
    dlX = dlarray(X,'CBT');

    Просмотрите размер и формат входных данных.

    size(dlX)
    ans = 1×3
    
        10   128   100
    
    
    dims(dlX)
    ans = 
    'CBT'
    

    Для поэлементной нормализации слоя инициализируйте смещение и шкалу с массивом нулей и единиц, соответственно.

    offset = zeros(numChannels,sequenceLength);
    scaleFactor = ones(numChannels,sequenceLength);

    Примените операцию нормализации слоя с помощью layernorm функция. Задайте смещение и форматы шкалы как 'CT' (канал, время) использование 'OffsetFormat' и 'ScaleFormat' опции, соответственно.

    dlY = layernorm(dlX,offset,scaleFactor,'OffsetFormat','CT','ScaleFormat','CT');

    Просмотрите размер и формат выхода dlY.

    size(dlY)
    ans = 1×3
    
        10   128   100
    
    
    dims(dlY)
    ans = 
    'CBT'
    

    Входные параметры

    свернуть все

    Входные данные в виде отформатированного dlarray, бесформатный dlarray, или числовой массив.

    Если dlX бесформатный dlarray или числовой массив, затем необходимо задать формат с помощью 'DataFormat' опция. Если dlX числовой массив, затем любой scaleFactor или offset должен быть dlarray объект.

    dlX должен иметь 'C' (канал) размерность.

    Возместите β в виде отформатированного dlarray, бесформатный dlarray, или числовой массив.

    Размер и формат смещения зависят от типа преобразования.

    ЗадачаОписание
    Мудрое каналом преобразование

    Массив с одной неодноэлементной размерностью с размером, совпадающим с размером 'C' (канал) размерность входа dlX.

    Для мудрого каналом преобразования, если offset отформатированный dlarray объект, затем неодноэлементная размерность должна иметь, маркируют 'C' (канал).

    Поэлементное преобразование

    Массив с 'C' (канал) размерность с тем же размером как 'C' (канал) размерность входа dlX и нуль или то же количество 'S' (пространственный), 'T' (время) и 'U' (незаданные) размерности входа dlX.

    Каждая размерность должна иметь размер 1 или иметь размеры, совпадающие с соответствующими размерностями во входе dlX. Для любых повторных размерностей, например, несколько 'S' (пространственные) размерности, размеры должны совпадать с соответствующими размерностями в dlX или должен все быть одиночный элемент.

    Программное обеспечение автоматически расширяет любые одноэлементные размерности, чтобы совпадать с размером одного наблюдения во входе dlX.

    Для поэлементного преобразования, если offset числовой массив или бесформатный dlarray, затем необходимо задать формат смещения с помощью 'OffsetFormat' опция.

    Масштабный коэффициент γ в виде отформатированного dlarray, бесформатный dlarray, или числовой массив.

    Размер и формат смещения зависят от типа преобразования.

    ЗадачаОписание
    Мудрое каналом преобразование

    Массив с одной неодноэлементной размерностью с размером, совпадающим с размером 'C' (канал) размерность входа dlX.

    Для мудрого каналом преобразования, если scaleFactor отформатированный dlarray объект, затем неодноэлементная размерность должна иметь, маркируют 'C' (канал).

    Поэлементное преобразование

    Массив с 'C' (канал) размерность с тем же размером как 'C' (канал) размерность входа dlX и нуль или то же количество 'S' (пространственный), 'T' (время) и 'U' (незаданные) размерности входа dlX.

    Каждая размерность должна иметь размер 1 или иметь размеры, совпадающие с соответствующими размерностями во входе dlX. Для любых повторных размерностей, например, несколько 'S' (пространственные) размерности, размеры должны совпадать с соответствующими размерностями в dlX или должен все быть одиночный элемент.

    Программное обеспечение автоматически расширяет любые одноэлементные размерности, чтобы совпадать с размером одного наблюдения во входе dlX.

    Для поэлементного преобразования, если scaleFactor числовой массив или бесформатный dlarray, затем необходимо задать формат шкалы с помощью 'ScaleFormat' опция.

    Аргументы name-value

    Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

    Пример: 'Epsilon',1e-4 устанавливает значение смещения отклонения к 1e-4.

    Порядок размерности бесформатных входных данных в виде вектора символов или строкового скаляра FMT это обеспечивает метку для каждой размерности данных.

    Когда вы задаете формат dlarray объект, каждый символ обеспечивает метку для каждой размерности данных и должен быть одним из следующего:

    • "S" — Пространственный

    • "C" — Канал

    • "B" — Пакет (например, выборки и наблюдения)

    • "T" — Время (например, временные шаги последовательностей)

    • "U" — Незаданный

    Можно указать, что несколько размерностей пометили "S" или "U". Можно использовать, маркирует "C"B, и "T" самое большее однажды.

    Необходимо задать DataFormat когда входными данными не является отформатированный dlarray.

    Типы данных: char | string

    Смещение отклонения для предотвращения делит на нуль ошибки в виде разделенной запятой пары, состоящей из 'Epsilon' и числовой скаляр, больше, чем или равный 1e-5.

    Типы данных: single | double

    Порядок размерности бесформатного масштабного коэффициента в виде разделенной запятой пары, состоящей из 'ScaleFormat' и вектор символов или строковый скаляр.

    Когда вы задаете формат dlarray объект, каждый символ обеспечивает метку для каждой размерности данных и должен быть одним из следующего:

    • "S" — Пространственный

    • "C" — Канал

    • "B" — Пакет (например, выборки и наблюдения)

    • "T" — Время (например, временные шаги последовательностей)

    • "U" — Незаданный

    Для нормализации слоя масштабный коэффициент должен иметь "C" (канал) размерность. Можно указать, что несколько размерностей пометили 'S' или 'U'. Можно использовать метку "T" (время) самое большее однажды. Масштабный коэффициент не должен иметь "B" (пакетная) размерность.

    Необходимо задать 'ScaleFormat' для поэлементной нормализации, когда scaleFactor числовой массив или бесформатный dlarray.

    Пример: 'ScaleFormat',"SSCB"

    Типы данных: char | string

    Порядок размерности бесформатного смещения в виде разделенной запятой пары, состоящей из 'OffsetFormat' и вектор символов или строковый скаляр.

    Когда вы задаете формат dlarray объект, каждый символ обеспечивает метку для каждой размерности данных и должен быть одним из следующего:

    • "S" — Пространственный

    • "C" — Канал

    • "B" — Пакет (например, выборки и наблюдения)

    • "T" — Время (например, временные шаги последовательностей)

    • "U" — Незаданный

    Для нормализации слоя смещение должно иметь "C" (канал) размерность. Можно указать, что несколько размерностей пометили "S" или 'U'. Можно использовать метку "T" (время) самое большее однажды. Смещение не должно иметь "B" (пакетная) размерность.

    Необходимо задать 'OffsetFormat' для поэлементной нормализации, когда offset числовой массив или бесформатный dlarray.

    Пример: 'OffsetFormat',"SSCB"

    Типы данных: char | string

    Выходные аргументы

    свернуть все

    Нормированные данные, возвращенные как dlarray. Выход dlY имеет тот же базовый тип данных как вход dlX.

    Если входные данные dlX отформатированный dlarray, dlY имеет те же метки размерности как dlX. Если входными данными не является отформатированный dlarray, dlY бесформатный dlarray с той же размерностью заказывают как входные данные.

    Алгоритмы

    Операция нормализации слоя нормирует элементы xi входа первым вычислением среднего μL и отклонения σL2 по пространственному, время и размерности канала для каждого наблюдения независимо. Затем это вычисляет нормированные активации как

    xi^=xiμLσL2+ϵ,

    где ϵ является константой, которая улучшает числовую устойчивость, когда отклонение очень мало.

    Допускать возможность, что входные параметры с нулевым средним значением и модульным отклонением не оптимальны для операций, которые следуют за нормализацией слоя, операция нормализации слоя дальнейшие сдвиги и масштабируют активации с помощью преобразования

    yi=γx^i+β,

    где смещение β и масштабный коэффициент, γ является настраиваемыми параметрами, которые обновляются во время сетевого обучения.

    Ссылки

    [1] Ba, Джимми Лэй, Джейми Райан Кирос и Джеффри Э. Хинтон. “Нормализация слоя”. Предварительно распечатайте, представленный 21 июля 2016. https://arxiv.org/abs/1607.06450.

    Расширенные возможности

    Введенный в R2021a