如果只能学习一个算法的话,我选择逻辑回归。 讲个笑话,逻辑回归既不讲逻辑,也不是回归。
本文目的是以大白话的方式介绍逻辑回归。我们先简要以公式的方式回顾什么是逻辑回归,如何训练。然后,我们用大白话的方式重新解释一次逻辑回归。最后,我们介绍逻辑回归和大脑的关系。是的,两者有关系。
逻辑回归,是个二分类算法,即给定一个输入,输出true/false判断是否属于某个类别,同时还能给出属于这个类别的概率。
输入是x,输出是y,中间有个临时变量是t。w和b是模型参数。h(t)是属于某个类别的概率,大于0.5认为属于这个类别,即y=1。
简便起见,我们可以认为b始终和一个值为1的w相乘。于是我们把b放入w。模型简化为
这就是逻辑回归的公式,非常简单。
给定输入x1,x2,...,xn,并给定目标输出y1,y2,...,yn;请问w值最应该是多少呢?这句话,不说人话,就是极大似然估计
。
如何进行极大似然估计呢?极大似然估计,顾名思义,就是先有个似然
,然后让它取最大值。说人话: 给定X,经过模型W得到Y的概率,这个概率要最大化。即P(Y|X)在什么W的情况下最大,即求W并使得P(Y|X;W)最大化。
那么P(Y|X;W)怎么定义呢?由于我们有多个样本,每个样本都可以得到一个P(y|x;w),概率相乘即可得到总的概率。
这个公式如何进一步深化呢?
h(x)是w模型认为的结果,y是期望的输出,y只可能是0或者1。
上述相当于if-else逻辑。如果我们将if-else放到一个公式中就好了。于是,利用一点技巧,我们得到下面公式。
将多个样本的上述公式的值相乘,即可以定义为总的似然函数。
即然是求最大值,那么找到拐点就可以了。由于相乘不好计算,先log一下转为对数似然函数
,即相乘转相加,问题转化为求对数似然函数的最大值时的w。
这下问题就简单了。就是求导数,梯度下降法。最终得到了迭代更新w的方法。
至此,我们成功得到了逻辑回归的训练方法。但是,有两个问题,我们忽略了。(1)为什么在线性t=wx+b的基础上又套了一层sigmoid函数,也称logistic函数?(2)为什么使用sigmoid函数,而不是其他的什么奇葩函数?
对于二分类问题,线性回归原则上也能解决。然而,二分类问题一般伴随着y的分布是二项分布。线性回归的y不适合。
这篇文章解释的还不错。大体可以回归到David Cox在1958年首先提出逻辑回归算法的思路上来。
即,先定义了一个直觉的概念优势比
p/(1-p),p是true时的概率,1-p是false时的概率,对优势比取log,即t=log(p/(1-p))进行值域转换,转到所有实数域。然后反过来求p,最终即可得到sigmoid函数。
sigmoid函数的有趣特点是,自变量是负无穷到正无穷,应变量是0到1。越接近0变化越大。导函数是p(1-p),导函数很有趣。总之,这个函数充满了数学美
。
前面讲了一大堆公式。这里我们对逻辑回归进行大白话解释,力求让外行小白也能听懂。
假设我们是一家银行,手里有很多人的收入信息,同时手里还有这些人是否按时还房贷的信息。现在我们想得到一个模型,依此模型来判断是否批复一个新客户的房贷申请。这里x就是收入信息(x为负表示此人现金流为负),y=1表示此人会按时还房贷,我们要得到w。h(x)表示这个人的0~1的信用分。
我们不知道怎么取w,不如先随机地取一个值。然后根据公式进行迭代。先h(x)估算出了一个概率,和目标值相差y-h(x)。如果目标值y是1,则y-h(x)是正的,否则是负的。
当y是1时,
同样道理,当y为0时,若x为正,(y-h(x))x为负,说明w应该变小。
回到银行放贷的例子上。训练时,
好了,讲到这里x只是收入一个维度。我们把x变成两个维度,在收入之外,引入学历。在前面的所有描述中,两个维度之间是并行的,不相关的,所以,两个维度各算各的。这样我们很容易地可以引入多个维度。
总结一下,基本意思就是,我这个样本应该高你给我低,你应该加大权重。我这个样本应该低你给我高,你应该减少权重。很多个样本过来,每个人贡献一点调整信息,最后模型被调整到一个合理的位置。
大脑的基本单位是神经元。我们目前还不能完全理解大脑的运行机理,但是根据很多实验的到的结论来看,真实的大脑神经元和机器学习的神经元非常相似。这里我们卖个噱头,指的是和机器学习的神经元的关系。具体细节请参考sigmoid神经元。
也有研究表明ReLU效果更好,更接近真实的大脑结构。这里有篇文章比较了ReLU和Sigmoid,从美的角度,我更愿意Sigmoid。
以后的篇幅,我们再更多地介绍神经元。