回归算法( 四 )


L0范数是指向量中非0的元素的个数 。(L0范数很难优化求解)
L1范数是指向量中各个元素绝对值之和
L2范数是指向量各元素的平方和然后求平方根
8. 分类器
上面优化了w,可以通过正确的w计算得分值,但是我想要概率,来分类
函数:
使用函数把数字映射到0~1
类似地,分类器--->归一化分分类概率
通过函数进行归一化,再用损失函数取log计算损失值
这里的log以10为底(不写底数的log可能以2,e,10为底,比如算法与数据结构里面是默认以2,数学物理里常用以e为底,电路里以10为底,数值计算里常用以10为底,编程语言都以e为底,但是无所谓,相差一个常数系数而已)
细节:一文详解函数 - 知乎 ()
对比一下:SVM和,有一个放大操作exp,这样可以很好地把他们区别开来在进行比较
9/10. 最优化
梯度下降下山,使得J(θ)最小,那么怎样是最小呢?
梯度下降什么意思,就是要让梯度一直处于向下的趋势!如果在下山,梯度本身就是向下的ok,如果在上山,梯度上升了,不行!所以得开始走反方向,一直走到最低点
神经网络:前向传播+反向传播
先随机初始化再进行优化操作
取数据函数--->一次迭代多张图像(16,32,64,128张都行,看计算机性能)
迭代次数变大,不一定都是loss变小,有时候也会有锯齿有波动,但是整体水平是向下的就可以啦!有时候要迭代到以万为单位,才能得到最终结果
1个epoch和1次迭代的意思:
#epoch: 1个epoch指用训练集中的全部样本训练一次,此时相当于 等于训练集的样本数 。如果epoch=50,总样本数=10000,=20,则需要迭代500次 。
# : 1次即迭代1次,也就是用个样本训练一次 。
(epoch是时期,batch是一批,也就是说一个时期epoch就是把所有总样本都迭代过了)
(一组20个一共10000个,则需要迭代500次,这500次就是一个epoch)
学习率LRrate:一般低一点0.001/0.0001都可以,因为太大的话一步直接跨过了最低点了,w += 中心梯度*LR,把变化量化小
11. 反向传播
(这里把偏导打成编导了 。。。)
具体怎么算呢?
也可以一大块一大块地算:
把整块当成一整个函数进行求偏导
常见的门单元:(就是常见的神经元)
max门单元反向传播的时候,只会把梯度给最大的!
神经网络架构 1. 整体架构
神经元就是便于理解,在程序中不存在,不用定义神经元类
(此处W和X都是矩阵哈)
正向传播:比如第一个隐藏层的第一个神经元,获得输入,并且他们都有被权重参数给改变过了,所以x1=w1_1*x1,x2=w1_2*x2...然后再输入到神经元里面,这个神经元就是一个求和,然后通过激活函数变成非线性,再往下传,一直到得到了(线性加权求和+非线性激活函数)
反向传播:得到了,然后就要对最前面的input中的求偏导,比如对x1求偏导,得到了-10,也就是斜率=-10,那说明影响很大而且是梯度向下的,说明ok,只要别向上就ok,如果是10,说明已经在上坡了,不行,w得调整成负的 。
再正向传播.....
(关于为什么神经元里不是函数式:成百上千万的神经元,怎么可能一个个写函数式嘛!所以只能是简单的加权求和,但是加权求和又不完全满足,所以要使用激活函数,而且激活函数的式子也不是自己写的,是从常见激活函数里挑选的)
1/2. 激活函数
激活函数:
我们会发现在每一层的神经网络输出后都会使用一个函数(比如,tanh,Relu等等)对结果进行运算,这个函数就是激活函数( ) 。那么为什么需要添加激活函数呢?