vault backup: 2026-05-07 15:52:15

This commit is contained in:
Dmitry
2026-05-07 15:52:15 +03:00
parent 4433e1b253
commit 8ab1121ffc
4 changed files with 202 additions and 111 deletions
+7 -8
View File
@@ -13,13 +13,13 @@
"state": {
"type": "markdown",
"state": {
"file": "01 Library/11 Machine Learning/Обратное распространение ошибки - вывод.md",
"file": "01 Library/11 Machine Learning/Обратное распространение ошибки для произвольного числа слоев НС.md",
"mode": "preview",
"source": false,
"backlinks": false
},
"icon": "lucide-file",
"title": "Обратное распространение ошибки - вывод"
"title": "Обратное распространение ошибки для произвольного числа слоев НС"
}
}
]
@@ -94,8 +94,7 @@
}
],
"direction": "horizontal",
"width": 221.5,
"collapsed": true
"width": 221.5
},
"right": {
"id": "38c591aa0966839e",
@@ -171,13 +170,13 @@
"state": {
"type": "outline",
"state": {
"file": "01 Library/11 Machine Learning/Обратное распространение ошибки - вывод.md",
"file": "01 Library/11 Machine Learning/Обратное распространение ошибки для произвольного числа слоев НС.md",
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "Outline of Обратное распространение ошибки - вывод"
"title": "Outline of Обратное распространение ошибки для произвольного числа слоев НС"
}
},
{
@@ -248,12 +247,12 @@
},
"active": "cb9f1037ae0492db",
"lastOpenFiles": [
"01 Library/11 Machine Learning/Обратное распространение ошибки - вывод.md",
"01 Library/11 Machine Learning/Обратное распространение ошибки.md",
"01 Library/11 Machine Learning/Нейронные сети.md",
"01 Library/11 Machine Learning/Обратное распространение ошибки - вывод.md",
"00 Inbox/Алгоритм обратного распространения ошибки для произвольного числа слоев НС.md",
"99 System/Archive/Алгоритм обратного распространения ошибки для произвольного числа слоев НС.md",
"01 Library/11 Machine Learning/Алгоритм обратного распространения ошибки для произвольного числа слоев НС.md",
"01 Library/11 Machine Learning/Обратное распространение ошибки для произвольного числа слоев НС.md",
"00 Inbox/Hello.md",
"00 Inbox/Обратное распространение ошибки - вывод.md",
"99 System/Archive/Обратное распространение ошибки - вывод.md",
@@ -1,16 +1,19 @@
---
status: seed
status: processing
type: concept
tags:
- ml
- machine-learning
- linear-models
- regression
- classification
created: 2026-02-26
updated: 2026-02-27
title: Линейные Модели
updated: 2026-05-07
title: Линейные модели
---
# Линейные Модели
# Линейные модели
## Общее Представление О Линейных Моделях
## Общее представление о линейных моделях
**Линейные модели** являются одним из наиболее фундаментальных и широко используемых типов моделей машинного обучения. Они основаны на идее, что взаимосвязь между фичами и таргетом является **линейной**.
@@ -46,7 +49,7 @@ $$Q = \{(x_i, y_i)\}_{i=1}^n =\{(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)\}$$
* $m$ - количество признаков
* $n$ - размер выборки
Необходимо построить модель, восстанавливающую зависить $y$ от $x$:
Необходимо построить модель, восстанавливающую зависимость $y$ от $x$:
$$y=f(x)$$
### Общая Идея
@@ -55,7 +58,7 @@ $$y=f(x)$$
$$f(x) = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + ... + \beta_m x_m$$
То есть прогнозы модели $\hat{y}$ будут строится на основе этой функции:
То есть прогнозы модели $\hat{y}$ будут строиться на основе этой функции:
$$\hat{y} = f(x)= \beta_0 + \beta_1 x_{1} + \beta_2 x_{2} + ... + \beta_m x_{m} = \beta_0 + \sum_{j=1}^m \beta_j \cdot x_{j}$$
@@ -872,9 +875,9 @@ $$\nabla L(\beta) = \frac{2}{n} \cdot X^T(X \cdot \beta - y)$$
#### Градиентный Спуск: Пример Рассчетов И Реализации *
#### Градиентный Спуск: Пример Расчётов И Реализации *
> В целях экономии ручных рассчетов реализации ниже опущен коэффициент $\frac{2}{n}$, так как он не влияет на сходимость, алгоритм в любом случае сходится к точке минимума просто за бОльшее количество итераций. Добавлять его или нет - ваш выбор. В реализации градиентного спуска в sklearn данный коэффициент учитывается при рассчете.
> В целях экономии ручных расчётов в реализации ниже опущен коэффициент $\frac{2}{n}$, так как он не влияет на направление сходимости: алгоритм всё равно движется к точке минимума, просто с другим масштабом шага. В реализации градиентного спуска в sklearn данный коэффициент учитывается при расчёте.
Для иллюстрации работы алгоритма приведем пример вычислений нескольких итераций градиентного спуска для случая поиска коэффициентов линейной регрессии
@@ -2064,7 +2067,9 @@ $$\sigma(z) = \frac{e^z}{1+e^z} = \frac{1}{1 + e^{-z}}$$
* Значения сигмоиды $\sigma(z)$ лежат в диапазоне от $0$ до $1$.
* Функция $\sigma(z) \rightarrow 0$ при $z \rightarrow -∞$ и $\sigma(z) \rightarrow 1$ при $z \rightarrow +∞$
* $\sigma(z) < 0.5$ при $z < 0$, $\sigma(z) > 0.5$ при $z>0$ и $\sigma(z) = 0.5$ при $z=0$.
* Сигмоида имеет очень простую и легко вычисляемую производную: $$\frac{d\sigma(z)}{dz} = \sigma(z)(1-\sigma(z))$$То есть, если значение сигмоиды в определенной точке уже вычислено, то мы можем использовать это же значение для рассчета значения производной (градиента) в этой же точке. Это сильно упрощает рассчеты.
* Сигмоида имеет очень простую и легко вычисляемую производную:
$$\frac{d\sigma(z)}{dz} = \sigma(z)(1-\sigma(z))$$
То есть, если значение сигмоиды в определенной точке уже вычислено, то мы можем использовать это же значение для расчёта значения производной (градиента) в этой же точке. Это сильно упрощает расчёты.
**А теперь гвоздь программы:**
@@ -2233,7 +2238,7 @@ $$z = \beta ⋅ x = \beta_0 + \beta_1 \cdot x_{1} + \beta_2 \cdot x_{2} + \beta_
> **Правдоподобие** — это оценка того, насколько вероятно получить истинное значение целевой переменной $y$ при данных $x$ и параметрах $\beta$.
Цель метода — найти такие параметры , в которых наблюдается максимум функции правдоподобия. Но для упрощения математических рассчетов для поиска используется не само правдоподобие, а его логарифм.
Цель метода — найти такие параметры, при которых наблюдается максимум функции правдоподобия. Но для упрощения математических расчётов для поиска используется не само правдоподобие, а его логарифм.
Приведем конечный вид формулы логарифмического правдоподобия для случая бинарной классификации. Вывод формулы и описание метода можно найти [здесь](https://kuleshov-group.github.io/aml-book/contents/lecture4-classification.html#maximum-likelihood).
@@ -2935,12 +2940,6 @@ print(metrics.classification_report(y, y_pred))
Для мультиклассовой классификации к отчёту просто добавляется новая строка, соответствующая третьему классу.
Из отчёта видно, что наша модель идеально решила задачу классификации (все метрики равны 1), то есть классы оказались линейно разделимыми.
Для мультиклассовой классификации к отчёту просто добавляется новая строка, соответствующая третьему классу.
Из отчёта видно, что наша модель идеально решила задачу классификации (все метрики равны 1), то есть классы оказались линейно разделимыми.
@@ -2965,6 +2964,8 @@ print(metrics.classification_report(y, y_pred))
* [Учебник по машинному обучению от Яндекса](https://education.yandex.ru/handbook/ml/article/linear-models) (0 кода, но много математики и красивых картинок)
## Связанные заметки
- [[Нейронные сети]] — персептрон и логистическая регрессия используют ту же идею линейной комбинации признаков и весов
- [[Обратное распространение ошибки]] — градиентный спуск и цепное правило обобщают идею оптимизации параметров на многослойные сети
- [[Принципы дискриминантного анализа]] — статистическая формализация той же задачи классификации; обучающая выборка + матрица "объект-свойство" = постановка задачи ML
- [[Функция потерь]] — C → min в ДА и MSE → min в МНК — один и тот же принцип минимизации ошибки классификации
- [[Постановка задачи снижения размерности признакового пространства]] — PCA как предобработка перед линейными моделями
@@ -1,113 +1,204 @@
---
status: processing
type: concept
tags: []
tags:
- machine-learning
- neural-networks
created: 2025-12-17
updated: 2026-05-07
title: Нейронные сети - ДВ
title: Нейронные сети
---
# Нейронные сети - ДВ
Два основных направления исследование по ИИ:
1) Моделирование результатов естественного мышления
- Важнее всего результат
- Хорошее совпадение поведения Искусственно-созданных и естественных интеллектуальных систем
- Внутренние механизмы не важны
1) Моделирование механизмов естественного мышления
# Нейронные сети
*В первой точке зрения* рассматривается продукт интеллектуальной деятельности человека, изучается его структура и ставится цель воспроизвести этот продукт средствами современной техники (машинный интеллект).
(Системы нечеткого вывода, экспертные системы, построенные по принципу **баз знаний**)
Нейронные сети - модели машинного обучения, вдохновлённые принципами работы биологических нейронов. Их основа - набор связанных искусственных нейронов, которые преобразуют входной вектор $X$ в выходной вектор $Y$.
*Во втором* направлении рассматриваются данные о нейрофизиологических и психологических механизмах интеллектуальной деятельности и разумного поведения человека. Ставится цель воспроизвести эти механизмы с помощью тех или иных технических устройств.
(Рассматривают принципы функционирования и попытки смоделировать эти принципы, например, *нейронные сети*)
## Два направления в ИИ
В исследованиях искусственного интеллекта можно выделить два направления:
1. **Моделирование результатов естественного мышления**
- важен результат;
- внутренние механизмы не обязательны;
- цель - получить поведение, похожее на поведение естественных интеллектуальных систем.
Примеры: системы нечёткого вывода, экспертные системы, построенные по принципу баз знаний.
2. **Моделирование механизмов естественного мышления**
- важны нейрофизиологические и психологические механизмы;
- цель - воспроизвести эти механизмы техническими средствами.
Нейронные сети относятся ко второму направлению.
## Биологический нейрон
![[Pasted image 20260410103922.png]]
Входные сигналы дендритного дерева взвешиваются и суммируются на пути к аксонам, где генерируется выходной импульс. Выходной сигнал передается (проходит) по ветвям аксона, достигает синапсов, которые соединяют аксоны с дендритами других нейронов.
Входные сигналы дендритного дерева взвешиваются и суммируются на пути к аксону, где генерируется выходной импульс. Выходной сигнал проходит по ветвям аксона и достигает синапсов, соединяющих аксоны с дендритами других нейронов.
Нейроны бывают:
1) Рецепторные - обеспечивают ввод в мозг сенсорной информации, поступающей от органов чувств;
2) Промежуточные - трансформируют сигналы, поступившие от рецепторов (рецепторных нейронов) и передают их эффекторным;
3) Эффекторные - отображают необходимое действие.
Типы нейронов:
В 40-х годах прошлого столетия, человечество задумалось о возможности моделировать умственный процесс человека с помощью ЭВМ.
В 1957 году появляется примитивная модель - Персептрон Розенблатта.
1. **Рецепторные** - вводят в мозг сенсорную информацию от органов чувств.
2. **Промежуточные** - трансформируют сигналы от рецепторных нейронов и передают их дальше.
3. **Эффекторные** - формируют необходимое действие.
С 70-х годов началось бурное развитие этого направления.
В 1957 году Фрэнк Розенблатт предложил модель персептрона. С 1970-х годов нейросетевое направление начало активно развиваться.
Основной задачей стала задача распознавания образом (первичной - распознавание образов букв)
Самой сложной задачей является задача классификации (например, задачей распознавания лиц)
Одна из классических задач нейронных сетей - распознавание образов: букв, лиц, объектов и т.д.
Искусственный нейрон состоит из элементов тех типов:
- Умножители (синапсы)
- Сумматоры
- Нелинейные преобразователи
## Искусственный нейрон
Искусственный нейрон состоит из трёх основных элементов:
- умножители, или синапсы;
- сумматор;
- нелинейный преобразователь, или функция активации.
![[Pasted image 20260410105854.png]]
Функцию активации ещё часто называют блоком нелинейного преобразования
Функцию активации часто называют блоком нелинейного преобразования.
![[Pasted image 20260410110002.png]]
При этом, к $S$ может прибавляться некоторое смещение, называемое *порогом срабатывания нейрона*: $S = \sum\limits_{i=1}^{n}\omega_{i}*x_{i}+b$
Взвешенная сумма входов:
Функцией активации нейрона, как правило, является *сигмоида*.
$$
S=\sum\limits_{i=1}^{n}\omega_i x_i+b
$$
где:
- $x_i$ - входной сигнал;
- $\omega_i$ - вес входа;
- $b$ - смещение (*bias*).
Смещение можно интерпретировать как порог срабатывания нейрона.
## Функции активации
Функция активации добавляет нелинейность. Без неё многослойная сеть сводилась бы к одному линейному преобразованию, а значит не могла бы эффективно моделировать сложные зависимости.
### Сигмоида
Функцией активации нейрона часто является сигмоида.
![[Pasted image 20260410110555.png]]
Для производной логистической функции верно следующее:
$f^{'}(x)=a*f(x)*(1-f(x))$
Следовательно значение произвольной функции вычисляется через её значение.
Если $a=1$, то это превращается в $y^{'}=y*(1-y)$
![[Pasted image 20260413130714.png]]
В качестве активационной функции также часто используется гиперболический тангенс.
$$th(x)= \frac{sh(x)}{ch(x)}=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}=\frac{e^{2x}-1}{e^{2x}+1}$$
Подобно логистической функции гиперболический тангенс является s-образной функцией, но он симметричен относительно начала координат, и в точке 0 значение выходного сигнала равно нулю.
Для логистической функции:
## Функция активации сети Хопфилда
$$y_{i} = \begin{cases} 1, \\ -1 \end{cases}$$
$$
f'(x)=a f(x)(1-f(x))
$$
![[Pasted image 20260413131243.png]]
Бинарная функция:
1, если S больше порога
0, если S < порога ($\theta$)
## Модели нейронных сетей
### Персептрон
\- *Персептрон*, или *перцептрон* (англ. perceptron от лат. perceptio — восприятие; нем. perzeptron) — математическая и компьютерная модель восприятия информации мозгом (кибернетическая модель мозга), предложенная Фрэнком Розенблаттом в 1957 году и реализованная в виде электронной машины "Марк-1" в 1960 году.
Любая нейронная сеть осуществляет некоторое нелинейное преобразование: $Y=F(X)$
Сущность нелинейного преобразования зависит от архитектуры сети и от характеристик самих нейронов (функции активации)
Нейронные сети в процессе функционирования осуществляется преобразование входного вектора $X$ в элементами $x_{1}, x_{2},\dots, x_{n}$ в выходной вектор $Y$ с компонентами $y_{1},\dots, y_{m}$
Конкретный вид, выполняемого сетью преобразования, зависит от архитектуры сети и от характеристик отдельных нейронов.
Преимущество НС - <u>обучаемость</u>.
Внутри сети могут быть представлены в виде совокупности матриц весов.
Суть обучения сводится к настройке весов ($W$), чтобы для заданног вектора X из обуч. выборки, чтобы на выходе получить наиболее близкий вектор Y.
Процесс обучения с учителем:
$X^{1} \to D^{1} \approx Y^{1}$
$X^{2} \to D^{2}$
$\vdots$
$X^{p} \to D^{p}$
Задача классификации, задача кластеризации и задача прогнозирования - решаются с помощью НС.
Персептрон - *один* слой искусственных нейронов.
Перспептрон решает задачу линейной разделимости:
Разбиение гиперпространства гиперплоскостями.
## Обучение нейронных сетей
Обучение сети с учителем сводится к настройке весов так, чтобы выход $Y$ был близок к целевому ответу $D$. Для многослойных сетей основной алгоритм вычисления градиентов - [[Обратное распространение ошибки]].
Если в качестве функции активации используется сигмоида, её производная выражается через уже вычисленное значение функции:
Если $a=1$, то:
$$
y'=y(1-y)
$$
Это удобно для обратного прохода: при вычислении локальной ошибки нейрона не нужно заново считать сложную производную активации.
То есть производную можно вычислить через уже полученное значение функции. Это удобно для [[Обратное распространение ошибки|обратного распространения ошибки]].
![[Pasted image 20260413130714.png]]
### Гиперболический тангенс
В качестве функции активации также используется гиперболический тангенс:
$$
\operatorname{th}(x)
=
\frac{\operatorname{sh}(x)}{\operatorname{ch}(x)}
=
\frac{e^x-e^{-x}}{e^x+e^{-x}}
=
\frac{e^{2x}-1}{e^{2x}+1}
$$
Как и логистическая функция, гиперболический тангенс является S-образной функцией, но он симметричен относительно начала координат. В точке $0$ его значение равно $0$.
### Бинарная функция
Для сети Хопфилда может использоваться бинарная функция активации:
$$
y_i =
\begin{cases}
1, \\
-1
\end{cases}
$$
![[Pasted image 20260413131243.png]]
В другом варианте бинарная функция возвращает:
$$
y =
\begin{cases}
1, & S \ge \theta \\
0, & S < \theta
\end{cases}
$$
где $\theta$ - порог.
## Модели нейронных сетей
Любая нейронная сеть выполняет нелинейное преобразование:
$$
Y=F(X)
$$
Сеть преобразует входной вектор:
$$
X=(x_1,x_2,\dots,x_n)
$$
в выходной вектор:
$$
Y=(y_1,y_2,\dots,y_m)
$$
Конкретный вид преобразования зависит от архитектуры сети, весов и функций активации.
Преимущество нейронных сетей - обучаемость. Веса сети можно представить как набор матриц. Суть обучения сводится к настройке этих весов так, чтобы для входного объекта $X$ сеть выдавала выход $Y$, близкий к правильному ответу $D$.
## Обучение с учителем
Процесс обучения с учителем:
$$
X^{(1)} \rightarrow D^{(1)} \approx Y^{(1)}
$$
$$
X^{(2)} \rightarrow D^{(2)} \approx Y^{(2)}
$$
$$
\vdots
$$
$$
X^{(p)} \rightarrow D^{(p)} \approx Y^{(p)}
$$
Нейронные сети применяются для задач классификации, прогнозирования, распознавания образов и других задач приближения сложных функций.
Для многослойных сетей основной алгоритм вычисления градиентов - [[Обратное распространение ошибки]]. Для сети с произвольным числом слоёв схема вынесена в [[Обратное распространение ошибки для произвольного числа слоев НС]].
## Персептрон
**Персептрон**, или **перцептрон**, - математическая модель восприятия информации, предложенная Фрэнком Розенблаттом в 1957 году и реализованная в машине «Марк-1» в 1960 году.
Персептрон - один слой искусственных нейронов. Он решает задачу линейной разделимости: разделяет пространство признаков гиперплоскостью.
По смыслу это близко к [[Линейные модели|линейным моделям]], потому что решение строится через линейную комбинацию входных признаков и весов.
## Связанные заметки
- [[Обратное распространение ошибки]]
- [[Обратное распространение ошибки для произвольного числа слоев НС]]
- [[Линейные модели]]
@@ -1,5 +1,5 @@
---
status: seed
status: stable
type: concept
tags:
- machine-learning
@@ -8,12 +8,12 @@ tags:
- gradient-descent
created: 2025-12-17
updated: 2026-05-07
title: Алгоритм обратного распространения ошибки для произвольного числа слоев НС
title: Обратное распространение ошибки для произвольного числа слоев НС
---
# Алгоритм обратного распространения ошибки для произвольного числа слоев НС
# Обратное распространение ошибки для произвольного числа слоев НС
Эта заметка обобщает [[Обратное распространение ошибки]] на сеть с произвольным числом слоёв. Подробный вывод для сети с одним скрытым слоем: [[Обратное распространение ошибки - вывод]].
Эта заметка обобщает [[Обратное распространение ошибки]] на [[Нейронные сети|нейронную сеть]] с произвольным числом слоёв. Подробный вывод для сети с одним скрытым слоем: [[Обратное распространение ошибки - вывод]].
## Обозначения