Изменения

Перейти к: навигация, поиск

Ядра

5014 байт добавлено, 19:03, 4 сентября 2022
м
rollbackEdits.php mass rollback
{{Определение
|definition=
'''Ядро''' (англ. ''kernel'') — функция $K: X \times X \to \mathbb{R}$, которая является скалярным произведением в некотором спрямляющем пространстве: $K(\vec{x}_1, \vec{x}_2) = \langle \psi(\vec{x}_1), \psi(\vec{x}_2) \rangle$ при некотором $\psi : X \to H$, где $H$ — пространство со скалярным произведением.
}}
== Выбор ядра ==
* $K(\vec{x}_1, \vec{x}_2) = \sigma(\langle \vec{x}_1, \vec{x}_2 \rangle)$ — нейросеть с заданной функцией активации $\sigma(z)$ (не при всех $\sigma$ является ядром)
* $K(\vec{x}_1, \vec{x}_2) = \exp(-\beta \lVert \vec{x}_1 - \vec{x}_2 \rVert^2)$ — сеть радиальных базисных функций (англ. ''RBF'')
 
== Сверточные ядра ==
 
[[Файл:vgg-16_block1_conv1_6_filters.png|upright=1.0|thumb|Рисунок 1. Визуализация первых 6 фильтров VGG-16 слоя block1_conv1, объединенные в триплеты. Некоторые из них имеют разные веса для разных каналов. [https://3qeqpr26caki16dnhd19sv6by6v-wpengine.netdna-ssl.com/wp-content/uploads/2019/02/Plot-of-the-First-6-Filters-from-VGG16-with-One-Subplot-Per-Channel-1024x768.png Источник]]]
'''Сверточные ядра''' (англ. ''convolutional kernel'') — матрицы небольших размеров, с помощью которых производится [[Сверточные нейронные сети#Свертка|свертка]]. Используются для извлечения определенного признака, веса являются обучаемыми параметрами, например, с помощью [[Стохастический градиентный спуск|градиентного спуска]]. Для разноцветных (с количеством каналов больше единицы) изображений используются фильтры, которые являются тензором ядер. Веса у таких ядер внутри тензора могут иметь разные значения. Например для пространства RGB, мы можем искать границы только в канале красного цвета и ядро будет применять оператор Собеля, а ядра для синего и зеленого каналов будут иметь вид нулевой матрицы.
 
 
=== Примеры сверточных ядер ===
 
==== Сглаживающие фильтры ====
 
'''Средний фильтр''' (англ. mean filter) — это простой способ сглаживания и уменьшения шума в изображениях. Идея фильтра заключается в замене значения пикселя на среднюю сумму его соседей, включая сам пиксель. Обычно используется матрица размера $3 \times 3$, но для получения большего размытия можно брать матрицы большей размерности:
 
$\frac{1}{9}\begin{bmatrix}1&1&1\\1&1&1\\1&1&1\end{bmatrix}$ — средний фильтр размера $3 \times 3$
 
{|align="center"
|-valign="top"
|[[Файл:smoothing.jpg|400px|thumb|Рисунок 2. Оригинал и примененные к нему средние фильтры размеров $3 \times 3$ и $7 \times 7$ [https://homepages.inf.ed.ac.uk/rbf/HIPR2/mean.htm Источник]]]
|}
 
==== Определение границ ====
 
'''Оператор Собеля''' (англ. ''Sobel operator'') — ядро размерности $3 \times 3$, которое вычисляет приближенное значение производной изображения.
 
* $G_x = \begin{bmatrix}1&0&-1\\2&0&2\\1&0&-1\end{bmatrix}$ — горизонтальная компонента
* $G_y = \begin{bmatrix}1&2&1\\0&0&0\\-1&2&-1\end{bmatrix}$ — вертикальная компонента
 
Горизонтальная и вертикальная компоненты могут быть скомбинированы для нахождения значения градиента в точке $G=\sqrt{G^2_x + G^2_y}$
 
{|align="center"
|-valign="top"
|[[Файл:edge-detection.png|600px|thumb|Рисунок 3. Оригинал, его горизонтальная и вертикальная компоненты, градиент оригинала [https://en.wikipedia.org/wiki/Sobel_operator Источник]]]
|}
 
==== Определение линий ====
 
Оператор определения линий с помощью сверточных ядер состоит из 4 матриц $3 \times 3$: горизонтальной, вертикальной, и двух наклонных ($+45^{\circ}$ и $-45^{\circ}$) соответственно:
 
$\begin{bmatrix}-1&-1&-1\\2&2&2\\-1&-1&-1\end{bmatrix}$, $\begin{bmatrix}-1&2&-1\\-1&2&-1\\-1&2&-1\end{bmatrix}$, $\begin{bmatrix}-1&-1&2\\-1&2&-1\\2&-1&-1\end{bmatrix}$, $\begin{bmatrix}2&-1&-1\\-1&2&-1\\-1&-1&2\end{bmatrix}$
 
{|align="center"
|-valign="top"
|[[Файл:line_detection.png|400px|thumb|Рисунок 4. Оригинал и примененный к нему оператор нахождения линий [https://homepages.inf.ed.ac.uk/rbf/HIPR2/linedet.htm Источник]]]
|}
== См. также ==
* [[Метод опорных векторов (SVM)]]
* [[Сверточные нейронные сети]]
== Примечания ==
* [http://www.machinelearning.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%BE%D0%BF%D0%BE%D1%80%D0%BD%D1%8B%D1%85_%D0%B2%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2 machinelearning.ru — Машина опорных векторов]
* [https://www.youtube.com/watch?v=Adi67_94_gc&list=PLJOzdkh8T5kp99tGTEFjH_b9zqEQiiBtC&index=5 Лекция "Линейные методы классификации: метод опорных векторов"] — К.В. Воронцов, курс "Машинное обучение" 2014
* [https://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm HIPR Sobel Edge Detector]
[[Категория: Машинное обучение]]
[[Категория: Классификация]]
[[Категория: Регрессия]]
1632
правки

Навигация