从深度学习的视角看Logistic回归

大概几个月前就知道吴恩达大神在网易云课堂开课了,一直没有时间(拖延症晚期患者)系统的学习,这次趁着开博热潮尚未褪去,系统的学习一遍Ng大神的讲座实乃不二选择。

深度学习大概是在近三四年逐渐炙手可热的一种算法模型,本质上深度学习就是神经网络构成的,从上世纪五六十年代开始,神经网络一直是学者研究的内容,但相比于传统计算模型,神经网络的参数繁多,严重受阻于计算机硬件处理能力导致算法效率低下,同时存在着一系列算法本身问题例如过拟合,梯度消失等等。近些年,随着半导体硬件(老本行)的发展,计算速度指数级提升,参数训练慢的问题已经得到解决。同时,在AI前景的诱导下,各种新型的结构的提出也使得深度学习蓬勃发展。

Logistic回归是基于线性回归的一种常用分类方法(详细原理在这儿),它最大的优势在与模型简单,可解释性高,输出分类结果的同时还能输出分类的概率值。当然缺点也很多,简单即意味着效果嘛有点差(当然也分场景)。Logistic回归虽然简单,但是却是机器学习以及深度学习中算法的雏形,最经典的神经网络中每个节点的计算其实就是Logistic回归。所以从神经网络的角度再次理解logistic回归就有一种从哪里来到哪里去的感觉。

神经网络的最基本单元如下图所示。

标准三层式神经网络

这个标准三层神经网络主要结构包含三层,输入层L1,隐含层L2,输出层L3。中间的连线是各层之间的依赖关系,每一个圆圈成为一个neuron(神经元) ,构成这个神经元的最经典的计算就是logistic回归。所以说logistic回归可以看做是不包括输入层和隐含层的神经网络。

神经网络的主要计算过程其实还是最优化原理的那一套,即给定一个目标函数(cost function),使用梯度下降(或者其他方法)对参数进行迭代计算,使得最终的输出值不断逼近真实值,从而训练出适合训练数据的神经网络。在神经网络的梯度下降过程中,每一轮参数的迭代都可以归纳为两个过程:

  1. 向前计算损失函数值
  2. 向后计算参数的梯度(即求导数)

向前和向后这两个过程真是太妙了,把原本数值参数的变化用图的方式动态推演了出来,十分形象。向前过程就是顺着神经网络搭建的过程,一个个逐步计算,最终得到当前的模型输出值,从而能够计算出神经网络的损失函数。向后过程其实是求导法则中的链式法则:

这个很简单,它最大的作用是把计算导数的过程分成了层级,从外向里每一层递进就是神经网络从输出端向输出端递进求导的过程。

用上面的向前向后过程来看logistic回归的训练过程就非常简单了。
以输入数据维度2为例,我们把logistic回归的过程拆分成如下所示


logistic 回归与损失函数

拆分后的流程图

对于这个图,我们就使用上面所说的前向后向计算法进行参数的迭代。
因为梯度下降的迭代(这里特指批量梯度下降)是嵌套两层的,先是对每一条样本数据进行学习,对梯度的下降和损失函数的减少进行累积,这是内循环。外循环是对参数和损失函数进行更新,会乘以一个学习率。我们从两个层次进行前向后向过程的计算。

内循环过程

内循环中,每一条数据分别经过一次前向和一次后向,最终得到结果

dz = a - y

外循环过程

外循环是在内循环执行完之后的后处理过程,做一个增量除以样本个数的操作,并且把前一个外循环的参数值减去这一堆内循环计算的增量与学习率的乘积,最终实现了参数的更新。
完整过程如下图所示。

J = 0, d𝑤1 = 0, d𝑤2 = 0, db = 0
for i = 1 to m:
        𝑧(𝑖) = 𝑤𝑇𝑥(𝑖) + 𝑏
        𝑎(𝑖) = 𝜎(𝑧(𝑖))
        𝐽 += − 𝑦(𝑖)log 𝑎(𝑖) + (1 − 𝑦(𝑖)) log(1 − 𝑎(𝑖))
        d𝑧(𝑖) = 𝑎(𝑖) −𝑦(𝑖)
        d𝑤1 += 𝑥1(𝑖)d𝑧(𝑖)
        d𝑤2 += 𝑥2(𝑖)d𝑧(𝑖)
        db += d𝑧(𝑖)
J = J/m, d𝑤1 = d𝑤1/m, d𝑤2 = d𝑤2/m
db = db/m 
𝑤1 =𝑤1 -∂d𝑤1
𝑤2 =𝑤2 -∂d𝑤2

当然在这个版块的后半段,Andrew Ng不忘告诉我们,如果你傻傻的按照for循环来实现这个代码,机器会崩溃的。所以为了提升效率,我们按照python里的numpy计算方式对上述过程进行向量化改进,把for循环浓缩成向量的乘积形式,如果再利用GPU的并行计算能力,那简直6的飞起了。

总而言之,logistic回归还是一种非常重要的基础分类算法,利用深度学习过程重新理解logistic回归,不仅过目难忘,而且对于理解更复杂算法十分有益。

终于写完了第一篇正式博客,过程有点累,干扰有点多,但是完成的一瞬间非常开心。下一次希望能写的更好,更多的呈现一些不了解的内容。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容