Инициализация
Инициализация (от англ. initialization, инициирование) — создание, активация, подготовка к работе, определение параметров. Приведение программы или устройства в состояние готовности к использованию. [1]
Термин употребляется как для программных, так и для аппаратных средств.
Действие инициализации направлено извне по отношению к инициализируемому объекту (программе, устройству) и необходимо для определения параметров и правил работы с ним.
Примеры
- Инициализация подсистемы печати для вывода на принтер. Перед печатью необходимо определить, на каком устройстве будет произведена печать и учесть особенности работы с ним (поддерживаемый формат печати, максимально возможное разрешение, возможность использования цвета и т. п.). Для этого устройство активируют (подача питания, управляющий сигнал), запрашивают возможные параметры работы или «сканируют» устройство для определения его возможностей, и значения этих параметров используют для первоначальной настройки подсистемы печати, чтоб она могла предложить пользователю варианты печати, соответствующие его оборудованию.
- Инициализация программы заключается в задании начальных значений или установке в нуль программных переменных (адресов, счетчиков, переключателей, указателей и т. п.) перед выполнением программы. Во многих языках программирования имеются средства определения начальных значений при первом описании переменной.
- Инициализация магнитного диска «винчестера» включает его форматирование и запись управляющей информации (метки тома, описателей дорожек и т. п.).
См. также
- Отложенная инициализация (шаблон проектирования)
- Инициация
Примечания
- Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное.
- Дополнить статью (статья слишком короткая либо содержит лишь словарное определение).
- Компьютер
Wikimedia Foundation . 2010 .
Синонимы:
Полезное
Смотреть что такое «Инициализация» в других словарях:
- инициализация — инициирование Словарь русских синонимов. инициализация сущ., кол во синонимов: 2 • инициирование (4) • … Словарь синонимов
- инициализация — Приведение областей памяти в состояние, исходное для последующей обработки или размещения данных. [ГОСТ 19781 90] инициализация Присваивание начальных значений переменным программы [ГОСТ 28397 89] Тематики обеспеч. систем обраб. информ.… … Справочник технического переводчика
- Инициализация — 37. Инициализация Initialize Присваивание начальных значений переменным программы Источник: ГОСТ 28397 89: Языки программирования. Термины и определения оригинал документа 3. Инициализация Приведен … Словарь-справочник терминов нормативно-технической документации
- инициализация — iniciacija statusas T sritis automatika atitikmenys: angl. initialization; initializing; initiating; initiation vok. Initialisieren, n; Initialisierung, f rus. инициализация, f; инициирование, n; присваивание начального значения, n pranc.… … Automatikos terminų žodynas
- инициализация (периферийного устройства) — Операция, необходимая для установки периферийного устройства в исходное положение и выполняемая до начала использования носителя данных или начала реализации процесса. [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ … Справочник технического переводчика
- инициализация (спутникового приемника) — Процедура измерений для предварительного разрешения неоднозначности перед началом спутниковых определений в кинематическом режиме. [РТМ 68 14 01] Тематики спутниковая технология геодезических работ Обобщающие термины методы спутниковых… … Справочник технического переводчика
- инициализация диска — Разметка диска и запись на него управляющей информации. [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN initializationdisk … Справочник технического переводчика
- инициализация общего опроса — — [ГОСТ Р МЭК 60870 5 103 2005] Тематики телемеханика, телеметрия EN initiation of general interrogation … Справочник технического переводчика
- инициализация периферийного устройства — Операция, необходимая для установки периферийного устройства в исходное положение и выполняемая до начала использования носителя данных или начала реализации процесса. [ГОСТ 25868 91] Тематики оборуд. перифер. систем обраб. информации EN… … Справочник технического переводчика
- инициализация системы — — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом EN system initialization … Справочник технического переводчика
- Обратная связь: Техподдержка, Реклама на сайте
- Путешествия
Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.
- Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
- Искать во всех словарях
- Искать в переводах
- Искать в ИнтернетеИскать в этой же категории
Русский [ править ]
Глагол, двувидовой (может образовывать формы совершенного и несовершенного вида), переходный, тип спряжения по классификации А. Зализняка — 2a.
Корень: -инициал-; интерфиксы: -из-ир-; суффикс: -ова; глагольное окончание: -ть [Тихонов, 1996] .
Произношение [ править ]
- МФА: [ ɪnʲɪt͡sɨəlʲɪˈzʲirəvətʲ ]
Семантические свойства [ править ]
Значение [ править ]
- книжн. дать начало чему-либо, запустить что-либо в действие, привести что-либо в исходное состояние ◆ VMware Server позволяет пользователям быстро инициализировать новые серверы путем разделения физического сервера на несколько виртуальных машин.
- комп. задать начальные значения какому-либо объекту, обеспечивая возможность работать с ним ◆ Затем необходимо инициализировать таблицу Classifiers записями, соответствующими рабочему словарю классификатора с произвольными весами Classifiers.weight. «Использование SQL для индексации и обработки текстовых документов», 2004 г. // «Информационные технологии» [НКРЯ]
Синонимы [ править ]
- частичн.: запустить
Русский
Корень: -инициал-; интерфикс: -из-; суффикс: -ациj; окончание: -я [Тихонов, 1996] .
Произношение
- МФА: [ ɪnʲɪt͡sɨəlʲɪˈzat͡sɨɪ̯ə ]
Семантические свойства
Значение
- действие по значению гл. инициализировать; процесс подготовки чего-либо к работе ◆ При запуске приложение проходит инициализацию .
- прогр. действие по значению гл. инициализировать; определение чего-либо, присвоение значений переменным программы ◆ При написании программы используются переменные, которые были заранее проинициализированы.
Инициализация параметров глубокой сети
Инициализация — это процесс установки настраиваемых параметров для нашей глубокой сети. Выбор правильного метода инициализации важен для качества обучения нашей модели. Также это позволяет сократить время сходимости и минимизировать функцию потерь. Поэтому важно уметь выбрать правильный метод инициализации.
Наивная инициализация
Если задать все параметры нулевыми или константными значениями, это приведёт к тому, что наша сеть либо совсем не обучится, либо абсолютно все нейроны будут вести себя одинаково — совсем не то, что мы хотим получить. Глубокая сеть должна обучаться разным признакам.
Инициализация случайными числами
Рассмотрим линейное преобразование:
- [math]y=w^Tx+b=\sum(w_i x_i)+b=\sum(y_i)+b[/math]
Примем значение вектора смещения $b$ нулевым, тогда дисперсия линейного преобразования (считаем настраиваемые параметры и входные данные независимыми):
- [math]\mathrm[y_i]=\mathrm[w_i x_i]=\mathbb[x_i]^2\mathrm[w_i]+\mathbb[w_i]^2\mathrm[x_i]+\mathrm[w_i]\mathrm[x_i][/math] (см. дисперсия произведения)
Так как мы сами выбираем параметры распределения, то мы их можем подобрать так, чтобы $\mathbb[w_i]=0$ (для всех слоев). Также можно добиться того, чтобы для первого слоя $\mathbb[x_i]=0$, если данные будут центрироваться в ходе нормализации, тогда:
- [math](\mathbb[x_i]=0, \mathbb[w_i]=0) \Rightarrow \mathrm[y_i]=\mathrm[w_i]\mathrm[x_i][/math]
Предыдущее предположение верно для первого слоя. Не трудно показать, что для всех следующих слоев оно тоже будет верно, если использовать симметричную функцию активации, которая будет сохранять нулевое математическое ожидание. Пусть $x=f(y_)$, где $f$ это симметричная функция активации, а $y_=w_^T x_$ (предыдущее представление). Покажем что $\mathbb[x]=0$:
- [math]\mathbb[y_>]=\mathbb[w_> x_>]=\mathbb[w_>] \mathbb[x_>]=0[/math]
Мы можем расписать математическое ожидание произведения, как произведение мат. ожиданий, поскольку $w$ и $x$ независимы.
[math]\Rightarrow \mathbb[y_]=\mathbb[\sum\limits_^>[y_>]]=\sum\limits_^>(\mathbb[y_>])=0[/math]
[math]\Rightarrow \mathbb[x]=\mathbb[f(y_)]=0[/math]
Поскольку $f$ симметрична.
Поскольку $x_i$ мы отнормировали, а $w_i$ из одного распределения, то все дисперсии одинаковые:
- [math]\mathrm[y]=\mathrm[\sum\limits_^>[y_i]]=\sum\limits_^>\mathrm[w_i x_i]=n_ \mathrm[w_i]\mathrm[x_i][/math]
Отсюда видно, что дисперсия результата линейно зависит от дисперсии входных данных с коэффициентом $n_ \mathrm[w_i]$, поэтому если инициализировать параметры так, что $\mathrm[w_i]=\frac
- Если коэффициент будет $>1$ это приведет к увеличению дисперсии с каждым новым преобразованием, что может привести к ошибкам или насыщению функции активации, что негативно скажется на обучении сети.
- Если коэффициент будет $
Если бы мы не использовали между слоями функцию активации, то дисперсия на последнем слое совпадала бы с дисперсией при инициализации входных данных, но использовать глубокую сеть без функции активации не имеет смысла, потому что она добавляет нелинейность нашей модели, чтобы выявлять более сложные закономерности. Поэтому, если мы будем использовать симметричную функцию активации, дисперсия на первом слое и на последнем все еще будет отличаться, но коэффициент $n_ \mathrm[w_i]$ уже не будет вносить вклад в дисперсию.
Поэтому для начальной инициализации параметров стоит использовать такое распределение, что $\mathrm[w_i]=\frac>$, которое позволит контролировать изменение дисперсии.
Метод инициализации Xavier [1]
Предыдущий подход хорошо работает, когда размерность наших данных не изменяется после преобразований $(n_ = n_)$, но так бывает не всегда. В качестве компромисса Xavier Glorot и Yoshua Bengio предлагают инициализировать параметры из распределения с дисперсией $\mathrm[w_i]=\frac
Для равномерного распределения $\mathcal U$ это будет:
Для нормального распределения $\mathcal N$ это будет:
- [math]w_i \sim \mathcal N(0,\frac+n_>)[/math]
Этот способ инициализации хорошо подойдет для симметричных относительно нуля функций активации (например гиперболический тангенс), для ReLU [2] данный способ не подходит.
Пример инициализации Xavier на языке Python с фреймворком PyTorch
# инициализация параметров одного слоя conv1 = torch.nn.Conv2d(. ) torch.nn.init.xavier_uniform(conv1.weight)
Пример инициализации Xavier на языке Python с библиотекой TensorFlow
# инициализация параметров тензора 2x2 initializer = tf.keras.initializers.GlorotUniform() values = initializer(shape=(2, 2))
Метод инициализации He [3]
Поскольку ReLU несимметричная функция $f(x) = max(0, x)$, мы уже не можем утверждать, что среднее значение входных данных в каждом преобразовании будет нулевым:
- [math](\mathbb[x_i] \neq 0, \mathbb[w_i]=0)[/math]
[math]\Rightarrow \mathrm[y_i]=\mathbb[x_i]^2\mathrm[w_i] + \mathrm[w_i]\mathrm[x_i]=\mathrm[w_i](\mathbb[x_i]^2 + \mathrm[x_i])=\mathrm[w_i]\mathbb[x_i^2][/math]
[math]\Rightarrow \mathrm[y]=n_\mathrm[w_i]\mathbb[x_i^2][/math]
Поэтому мы будем пытаться контролировать дисперсию не между слоями, а между входами ReLU. Пусть представление на входе было получено после применения данной функции активации к предыдущему представлению $y_$:
$\mathbb[y_]=0$, так как $w_>$ и $x_>$ независимы. Доказательство было в главе про инициализацию случайными числами.
Также $y_$ распределены симметрично относительно нуля:
- [math]\mathbb(y_\gt 0)=\mathbb(w_> x_>\gt 0)[/math]
[math]=\mathbb((w_>\gt 0 \wedge x_>\gt 0) \vee ((w_>\lt 0 \wedge x_>\lt 0)))[/math]
[math]=\mathbb(w_>\gt 0)\mathbb(x_>\gt 0)+\mathbb(w_>\lt 0)\mathbb(x_>\lt 0)[/math]
[math]=\frac\mathbb(x_>\gt 0)+\frac\mathbb(x_>\lt 0)=\frac[/math]
Из предыдущих двух выкладок следует:
- [math]\mathbb[x_i^2]=\mathbb[max(0, y_)^2]=\frac\mathbb[y_^2]=\frac\mathrm[ y_][/math]
[math]\Rightarrow \mathrm[y]=\fracn_\mathrm[w_i]\mathrm[y_][/math]
Получается, что при использовании ReLU, нужно инициализировать параметры из распределения с дисперсией $\mathrm[w_i]=\frac>$.
Для равномерного распределения $\mathcal U$ это будет:
- [math]w_i \sim \mathcal U[-\sqrt>>,\sqrt>>][/math]
Для нормального распределения $\mathcal N$ это будет:
- [math]w_i \sim \mathcal N(0,\frac>)[/math]
Пример инициализации He на языке Python с фреймворком PyTorch
# инициализация параметров одного слоя conv1 = torch.nn.Conv2d(. ) torch.nn.init.kaiming_uniform_(conv1.weight)
Пример инициализации He на языке Python с библиотекой TensorFlow
# инициализация параметров тензора 2x2 initializer = tf.keras.initializers.HeUniform() values = initializer(shape=(2, 2))
См.также
- Настройка глубокой сети
- Глубокое обучение
Примечания
- ↑Understanding the difficulty of training deep feedforward neural networks
- ↑ReLU, Wikipedia
- ↑Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification