---
# System prepended metadata

title: Нейрончики

---

# Нейрончики

Вроде как, в нашей лабе мы рассматриваем нейронные __сети прямого распространения__ ( СПР ). 

## Нейронная сеть в общем ввиде
![neuralnet](https://drive.google.com/uc?id=1KuM8paeRNvOEt-0WUxgjKihRwnRuvylu)

## Как работает нейрон

![neuron](https://i.imgur.com/9NiJObo.jpg)

__Активация нейрона:__ $h = \sum_{i=1}^n w_ix_i - b$
__Выход нейрона:__ $y = f( h )$, где $f$ -- функция активации

## Гиперпараметры нейронной сети

### Слои
#### Layers

![layers_practice](https://i.imgur.com/Uxc5om8.png)


Буквально число скрытых слоев т.е. число групп последовательно соединенных нейронов, кроме входного и выходного.

![layered_neuralnet](https://drive.google.com/uc?id=1CbGqsE55Yo2XWzTtkg33K3PMjEVdjREz)

### Функция потерь
#### Loss function

Это функция, частная производная значения которой используются в backpropagation при корректировке весов нейронов.

$$ \delta_i = \frac{\partial Loss}{\partial h_i }( h_i ) = \frac{\partial Loss}{\partial y_i}\frac{\partial y_i}{\partial h_i}( h_i ) = \frac{\partial Loss}{\partial y_i}\frac{df(h_i))}{dh_i}( h_i ) $$

![loss_practice](https://i.imgur.com/cupbP3i.png)

+ Binary crossentropy: $$ \log Loss = -\frac{1}{n}\sum^n_i( y_i\log[ p(y_i) ] + ( 1 - y_i )\log[ 1 - p(y_i) ] ) $$
+ Mean absolute devitaion: $$ Loss = \frac{1}{n}\sum^n_i | y_i - \hat y_i | $$
+ Standard deviation: $$ Loss = \sqrt{ \sum^n_i ( y_i - \hat y_i )^2 p( y_i ) } $$
+ Categorical Crossenthropy: $$Loss = -\sum^n_i y_i\cdot\log\hat y_i$$

### Размер партии
#### Batch size

![batch_practice](https://i.imgur.com/pfc1WkN.png)


Число примеров данных в одной партии. В ходе одной эпохи нейронной сети скармливается весь датасет, но порционно ( партийно ), причем эти порции наполняются случайными данными из датасета и вкупе формируют весь датасет. Таким образом, за одну эпоху мы скармливаем нейросети весь датасет.

## Регуляризаторы

__Регуляризаторы__ -- это один из способов предотвращения __переобучения ( overfitting )__ нейронной сети.
`P.S. о переобучении будет сказано дальше`
`P.P.S. далее одинарная кавычка не символ взятия производной`

### L1-Регуляризатор
#### Regularization L1

$L_1$ -- регуляризация (англ. lasso regression), или регуляризация через __манхэттенское расстояние__:
$$L_1 = \lambda\sum_i |w_i|\\ Loss' = Loss + L1$$

### L2-Регуляризатор
#### Regularization L2

$L_2$ -- регуляризация, или __регуляризация Тихонова__ (в англоязычной литературе — ridge regression или Tikhonov regularization), для _интегральных уравнений_ позволяет балансировать между соответствием данным и маленькой нормой решения:

$$L_2 = \lambda\sum_i w^2_i\\ Loss' = Loss + L_2$$

#### Итоговый Loss

Итого значение функции потерь с применением регуляризаторов $L_1$ и $L_2$:
$$Loss' = Loss + L_1 + L_2$$

### Скорость ( Темпы ) обучения
#### Learning rate

Коэффициент $\alpha$, на который домножается итоговая корректировка веса.

$$w_i = w_i - \alpha\frac{\partial Loss}{\partial h_i}( h_i )$$

![learnr_practice](https://i.imgur.com/bupFUmD.png)


### Функции активации
#### Activation function

![activationf_practice](https://i.imgur.com/OZePPjz.png)

+ softmax: $f(h_i) = \frac{e^{h_i}}{\sum^n_j e^{h_j}}$
+ relu: $f(h) = max( 0, h )$
+ tahn: $f(h) = \frac{e^h - e^{-h}}{e^h + e^{-h}}$
+ sigmoid: $f(h) = \frac{1}{1+e^{-h}}$
+ linear: $f(h) = h$

### Число эпох
#### Epoch Count

![epoch_practice](https://i.imgur.com/A7tDxBc.png)


Число циклов обучения нейронной сети.

![foriki](https://i.imgur.com/0QQ3KN7.png)


### Число нейронов в слое
#### Neurons count in layer

![neurons_count_practice](https://i.imgur.com/Bhe6P80.png)


![neurons_count](https://drive.google.com/uc?id=1HwmTGIBiGgQZA_nJKvPyhFQvaQHFkOut)

## Переобучение
### Overfitting

Это явление, при котором неройнная сеть выдает точные данные, но только на тренировачных данных, т.е. по сути не "обобщает" решение, а "запоминает" решения для конкретных входных данных. Есть несколько методов предотвращения переобучения

+ __Регуляризация__ -- описана выше
+ __Dropout__ -- на каждой итерации с определенным шансом зануляем вес нескольких нейронов, таким образом, мы обучаем несколько нейросетей, состоящих из подмножества нейронов исходной нейросети.