Neural Network Introduction

神经网络的基础与原理介绍 随笔,内容包括 :
Make your own neural networks - Tariq Rashid
Machine Learning - Hung-yi lee
3Blue1Brown

原理

左边784个neuron的激活值分别为28x28图像的784个pixels的灰度,最右边九个neuron激活值即选择为0-9分别的可能性。
在这里插入图片描述
中间的hidden layers可能对识别某些部分都有不同的作用, 每一个neuron的作用:
在这里插入图片描述
反向传播,每一个样本影响前面所有的神经元的w
在这里插入图片描述

通过Back Propagation + Gradient Descent来得到各参数

C为距离
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

计算方法

在这里插入图片描述
在这里插入图片描述
Forward Pass
在这里插入图片描述
Backward Pass
在这里插入图片描述
在这里插入图片描述
那么就可以从output layer开始往前算起偏微分了!
在这里插入图片描述在这里插入图片描述

问题

Train烂了?

层数收敛问题

在这里插入图片描述
train出来效果差,也不是overfitting,是因为层数多了,前面的层数还几乎是random的而后面的层数已经收敛了。而且如果用的是sigmoid函数激励,会将影响缩到(-1,1)范围,那么影响无论多大,过一层后都缩了太多。
解决方法
所以可以用ReLU(ReLU大法好)
不过也可以用神奇Maxout的方法:
在这里插入图片描述
这也是一个可学习的激励函数。

最佳参数

一般gradient descent很有可能可能由于plateau,saddle point,local minima停了下来:
在这里插入图片描述
解决方法
Momentum动量模拟:现在的gradient加上前一次移动的方向
在这里插入图片描述
在这里插入图片描述

Test烂了?

Early Stopping

在这里插入图片描述

Regularization

(对Deep Learning实际上效果不大)
https://blog.csdn.net/chitoseyono/article/details/86515759 Chapter 8 Regularization 模型正则化
在这里插入图片描述
在这里插入图片描述

Dropout

对每个neuron进行sampling,每个有p%被丢掉,瘦身NN
在这里插入图片描述
只在training的时候进行dropout,test时不dropout,但
在这里插入图片描述
(w要乘dropout rate的原因是在train的时候丢的如果直接上test数据,输出会变多几倍,所以应该乘上(1-p))
用dropout,在minibatch分别train,然后能得到ensemble的效果(就很爽)
在这里插入图片描述 而且因为在线性条件下dropout的效果跟直接的效果是相同的,而也有ReLU的线性特性,所以用ReLU的时候,dropout效果会很好。