前言
关于机器学习相关的算法,不想追求高大上,只想用通俗易懂的方式去推导。一是因为能力有限;二是因为只注重公式推导和严谨性对于初学者来说不好理解。欢迎大佬们多多指教。
☆☆☆ 算法目录导航页,包含基础算法、高级算法、机器学习算法等☆☆☆
1. ML/DL到底要干什么
其实整个机器学习或深度学习要干的事只有2件:
① Data → Model,已知数据,如何建模;
② Model → 求参数,已知model,如何求参数w。
2. 逻辑回归概念
逻辑回归(logistic regression)是机器学习模型中的基础模型。虽然叫回归,实际却是解决分类问题。究其原因,是历史遗留问题,大家不要纠结这个,只要记住是解决分类问题就可以了。(葫芦书有详细说明,有兴趣可以看看)
3. 如何建模
逻辑回归是一个广义的线性模型,我的理解它的初衷是想用线性函数去解决分类问题。比如,用 y = wx 解决分类,但是y的值是连续的,不是0,1。那么我们希望找到一个阶跃函数能把y的值映射成0,1,所以阶跃函数h如下: h ( y ) = { 0 , y < 0 0.5 , y = 0 1 , y > 0 h(y)=\left\{\begin{array}{cl}{0,} & {y<0} \\ {0.5,} & {y=0} \\ {1,} & {y>0}\end{array}\right. h(y)=⎩ ⎨ ⎧0,0.5,1,y<0y=0y>0
但是,上式不连续,我们希望找到一个单调可微函数,以便我们后面求解参数。所以, 我们找到了一个Sigmoid函数: h ( y ) = 1 1 + e − y h(y)=\frac{1}{1+e^{-y}} h(y)=1+e−y1
它的函数图像是这样的:
因此,用sigmoid函数代替了之前的阶跃函数。
sigmoid函数表示的是给定x, y趋近于0和1时的概率值,则我们可以表示为后验概率:
p 1 = P ( y = 1 ∣ x ; w ) = h ( x ) p_{1} = P(y=1|x;w) =h(x) p1=P(y=1∣x;w)=h(x)
p 0 = P ( y = 0 ∣ x ; w ) = 1 − h ( x ) p_{0} = P(y=0|x;w) =1-h(x) p0=P(y=0∣x;w)=1−h(x)
则目标函数可表示为: P ( y ∣ x ; w ) = p 1 y ⋅ p 0 1 − y P(y | x ; w) = p_{1}^{y} \cdot p_{0}^{1-y} P(y∣x;w)=p1y⋅p01−y
4. 如何求参数
① 找一个损失函数;
② 利用梯度下降算法优化损失并求出参数。
利用最大似然估计MLE化简目标函数。为什么用MLE呢?
1.最大似然也就是最大概率,概率越大即分类更精确,求出概率最大时w的值即可。
2.得到的损失函数是凸函数,利于求解。
所以,使用MLE是合理的。
MLE 化简: L ( w ) = max P ( y ∣ x ; w ) = max ∏ i = 1 n p ( y ( i ) ∣ x ( i ) ; w ) = max ∏ i = 1 n p 1 y ( i ) p 0 1 − y ( i ) = max ∏ i = 1 n ( h ( x ( i ) ) ) y ( i ) ( 1 − h ( x ( i ) ) ) 1 − y ( i ) \begin{aligned} L(w) &=\max P(y | x ; w) \\ &=\max \prod_{i=1}^{n} p\left(y^{(i)} | x^{(i)} ; w\right) \\ &=\max \prod_{i=1}^{n}p_{1}^{y^{(i)}}\ p_{0}^{1-y^{(i)}} \\ &=\max \prod_{i=1}^{n}\left(h\left(x^{(i)}\right)\right)^{y^{(i)}}\left(1-h\left(x^{(i)}\right)\right)^{1-y^{(i)}} \end{aligned} L(w)=maxP(y∣x;w)=maxi=1∏np(y(i)∣x(i);w)=maxi=1∏np1y(i) p01−y(i)=maxi=1∏n(h(x(i)))y(i)(1−h(x(i)))1−y(i)
为了简化运算,L(w)取对数:
l ( w ) = l n L ( w ) = m a x ∑ i = 1 n [ y ( i ) ln h ( x ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − h ( x ( i ) ) ) ] \ l(w)=ln L(w)=max\ \sum_{i=1}^{n}\left[ y^{(i)} \ln h\left(x^{(i)}\right)+\left(1-y^{(i)}\right)ln\left(1-h\left(x^{(i)}\right)\right)\right] l(w)=lnL(w)=max i=1∑n[y(i)lnh(x(i))+(1−y(i))ln(1−h(x(i)))]
求l(w)最大,也就是求-l(w)最小,那我们就可以定义损失函数为 -l(w),则损失函数为: J ( w ) = − 1 n ∑ i = 1 n [ y ( i ) ln h ( x ( i ) ) + ( 1 − y ( i ) ) l n ( 1 − h ( x ( i ) ) ) ] \ J(w)= -\frac{1}{n}\sum_{i=1}^{n} \left[y^{(i)} \ln h\left(x^{(i)}\right)+\left(1-y^{(i)}\right)ln\left(1-h\left(x^{(i)}\right)\right)\right] J(w)=−n1i=1∑n[y(i)lnh(x(i))+(1−y(i))ln(1−h(x(i)))]
它的函数图像是这样的:
它是一个单调凸函数,所以我们用梯度下降算法求参数w。梯度下降算法公式:
w j : = w j − α ∂ J ( w j ) ∂ w j w_{j} :=w_{j}-\alpha \frac{\partial J(w_{j})}{\partial w_{j}} wj:=wj−α∂wj∂J(wj)