深度学习神经网络学习日记

BP神经网络

#线性层

1.设置偏置项(bias)

2.进行高斯随机变量,归一化保持梯度不会下降得太快

3.注册参数,weight计算出参数

4.先将bias注册为0

5.设置偏置参数

#前馈层

1.batch_size设置

2.两个矩阵(x阵,权重阵)进行点乘做内积

3.如果偏置项存在,循环一遍batch_size相加

sigmoid函数:

前馈层的sigmoid函数计算出1/1+exp(-x)

赋值于后层的sigmoid函数

Forward中:

     self.results['sigmoid'] = sigmoid

Backward中

     sigmoid = self.results['sigmoid']

grad_input 梯度输入为grad*sigmoid*(1-sigmoid)

返回出grad_input

Tanh函数:

evalue = np.exp(x)

value = (evalue-1/evalue)/(evalue+1/evalue)

backward中使用forward的value

输出grad_input = grad*(1-value**2)

grad_input = grad*函数的导数 = grad×(1-value的平方)

ReLU激活函数:

大于0的部分忠于原始值,小于0的部分乘以0,归0.

(x>0).astype(float)

(x<0)=>  y= mask*x=0

L2函数:

diff = x-grad-truth(x-正确的值)

self.results[diff] = diff ^2

grad_input = diff的导数

                  = diff * 2

Binary Cross Entropy Loss

blabel改维->(batch_size,1)

bce = -(blabel*np.log(x) + (1-blabel)*log(1-x)

bce = -[-(a*log(x) + (1-a)*log(1-x))]

bce'(一阶导)=-[blabel/x + (1-blabel)/(1-x)]

grad_input = -[(blabel/x + (1-blabel)/(1-x)]

深度学习和神经网络:

1.softmax和CrossEntropy层

2.正则化

3.优化器

(1)SGD

  (2)Adam

4.简单的模型构建

前向和反向传播

5.数据和训练流程

(1)MINIST数据集

 (2)训练流程

6.总结

Pytorch深度学习框架

1.静态图和动态图

2.自动求导机制

其他经典机器学习方法:

1.KNN

2.SVM

3.决策树

4.Ensemble

softmax中按分母分子同除以e的xmax次方

onehotlabel × log(x)

正则化:

1.神经网络模型拟合能力强,倾向于过拟合

2.模型太复杂,泛化性不足

Minimize(Loss(Data|Model)

3.结构风险最小化

Minimize(Loss(Data|Model)+complexity(Model))

贝叶斯角度看模型:

log(P(w|D)~log(P(D|w)+log(P(w))

贝叶斯目标~频率学派目标与先验

你可能感兴趣的:(学习,python)