Day1
深度学习的核心是梯度
求解y的最小值
梯度:梯度的本意是一个向量(矢量),某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)
每一步迭代都是梯度下降
每一步:x’的值=当前x的值-x在y函数的导数
求x*即loss函数最小值时x的
反复迭代
学习率(Learning rate):作为监督学习以及深度学习中重要的超参,其决定着目标函数能否收敛到局部最小值以及何时收敛到最小值。合适的学习率能够使目标函数在合适的时间内收敛到局部最小值。(具体随问题调整,一般0.001)
学习率设置的过小时,收敛过程将变得十分缓慢。而当学习率设置的过大时,梯度可能会在最小值附近来回震荡,甚至可能无法收敛。
在第一个图可见x=5时,梯度较小
精确求解叫做Closed Form Solution(闭式解closed form solution)也叫解析解(analytical solution),就是一些严格的公式,给出任意的自变量就可以求出其因变量,也就是问题的解 )
但一般现实中,我们的数据都是有一定偏差的,对实际的问题不一定需要精确解Closed Form Solution,只要得到相似解并且在经验上证明可行即可(例如如图上半部分得到相似解即可)
在y=w*x+b + eps (添加高斯噪声,模拟现实中的数据)
求解在实际中具有较好的效果即可
x采样[0,15]
拿到100个有高斯噪声的采样点
假设函数符合线性分布
优化的目标即求loss=(WX+b+eps-y)²的极小值
我们把式子正式化一下,就是说对于这个方程,求解的参数是w和b
观测的样本是x和y,(Xi表示观测到第i个样本)
梯度下降能帮我们求最小值
而当loss=(y-(wx+b))取到最小值,此时的w和b也就是我们要求解的参数
(wx+b-y)²是非常好求解的,可视化求解过程
loss=∑(WXi+b-y)²,通过调整w和b的值,会取的不同的loss的值
i=1
我们希望求解loss最小值的点
现实中一般很难可视化,因为x的维度很高导致w的维度也很高
对w和b求导
比较直观的描述整个学习的过程,希望能看到直线能穿过整个数据集,使得整体误差较小
总体过程:WX+b = y
我们通过观察
WX1+b = y1
WX2+b = y2
...
等一系列样本来求w和b的值
最终目的给出任意Xn的值,能够很好的预测yn的值
linear regression:线性回归 (预测的值的取值范围是连续的,属于连续空间)
Logistic Regression:逻辑回归,在线性回归的基础上把X[负无穷,正无穷]数据压缩到[0,1]的范围,适合表达概率问题(例如二分类问题:抛硬币)
Classification:多分类问题(比如0-9手写数字,即每个点概率范围[0,1],10个点的概率加起来=1)
实战
points就是一系列x和y的组合
totaError/float(len(points))即loss=∑(i=1)(WXi+b-y)²
计算梯度信息,取得每个点x和y的值
对w求导,把x,b,y看成常量
loss
=2(wx+b-y)x
再对w求导
=2(wx+b-y)*1
#learning_rate学习率设置的过小时,收敛过程将变得十分缓慢。而当学习率设置的过大时,梯度可能会在最小值附近来回震荡,甚至可能无法收敛。
循环迭代梯度信息
循环100次取得的w,b的值就是比较理想的结果
def run(): |