Logistic regression

本文讲述如何用深度学习的角度来对机器学习里的Logistic Regression进行实现。

1. 我们对数据样本的样式进行定义。

假设我们有一系列训练样本x_{1},x_{2},...,x_{m},对应的类别为y_{1},y_{2},...,y_{m}.其中x\in\mathbb{R}^{n*1},y\in\mathbb{R}^{1}y\in\mathbb\{1,0\}(因为Logistic是适用于两类问题的,所以这里的target是两值)
X=\begin{bmatrix} x_{1} &x_{2} &... &x_{m} \end{bmatrix},
Y=\begin{bmatrix} y_{1} &y_{2} &... &y_{m} \end{bmatrix}
X\in\mathbb{R}^{n*m},Y\in\mathbb{R}^{1*m}.
从上述可以得知,我们需要求的模型是给定x,求出其对应的类别概率\hat{y}=P(y=1|x)
用线性模型来拟合我们的数据\hat{y}=w^{T}x+b的基础上,为了使y的范围可以限定在{0,1}之内,我们引入一个函数:\sigma(z)=\frac{1}{1+e^{-z}},\sigma(z)\in(0,1)
z\rightarrow+\infty(很大)的时候,e^{-z}很小,\sigma(z)\approx1
z\rightarrow-\infty(很小)的时候,e^{-z}很大,\sigma(z)\approx0
我们可以把拟合模型改写为
\hat{y}=\sigma(w^{T}x+b)
**其中w^{T}x+b可以通过对样本x添加一项x0=1在程序中改写为\theta^{T}x其中x\in\mathbb{R}^{(n+1)*1},\theta\in\mathbb{R}^{(n+1)*1}.
\theta=\begin{bmatrix} \theta_0\\ \theta_1\\ \theta_2\\ ...\\ \theta_n \end{bmatrix},即 \theta_0=b,\begin{bmatrix} \theta_1\\ \theta_2\\ ...\\ \theta_n \end{bmatrix}=w

2. 对模型的损失函数求梯度。

\hat{y}=\sigma(w^{T}x+b),其中 \sigma(z)=\frac{1}{1+e^{-z}}
给定\{(x^{(1)},y^{(1)}),...,(x^{(m)},y^{(m)})\},希望\hat{y^{(i)}}\approx y^{(i)}
损失函数(Loss(error)function):原线性模型的损失函数公式为
L(\hat{y},y)=\frac{1}{2}(\hat(y)-y)^2,但是在当前公式下使用这个公式得到的损失函数,无法拟合,所以,我们根据Logistic模型的特性,对判错进行误差(loss)统计,可以得到
如下公式:
L(\hat{y},y)=-(ylog\hat{y}+(1-y)log(1-\hat{y}))
我们可以分成两种情况来看这公式。
y=1:L(\hat{y},y)=-log\hat{y}
此时,\hat{y}\rightarrow1,L(\hat{y},y)\rightarrow0
y=0:L(\hat{y},y)=-log(1-\hat{y})
此时,\hat{y}\rightarrow0,L(\hat{y},y)\rightarrow0
反之则loss的值变大。
Cost Function:J(w,b)=\frac{1}{m} \sum_{i=1}^{m}L(\hat{y}^{(i)},y^{(i)})
=-\frac{1}{m} [\sum_{i=1}^{m}y^{(i)}log\hat{y^{(i)}}+(1-y^{(i)})log(1-\hat{y}^{(i)})]
梯度下降:
我们希望找到w,b的值,使cost function值最小。
我们以如下这个简单的模型来做例子。

example.png

其中
da =\frac{\partial{L(a,y)}}{\partial{a}}=-\frac{y}{a}+\frac{1-y}{1-a}

dz =\frac{\partial{L(a,y)}}{\partial{z}}=\frac{\partial{L(a,y)}}{\partial{a}}\frac{\partial{a}}{\partial{z}}

其中
\frac{\partial{a}}{\partial{z}}=a(1-a)

所以可以求得
dz =a-y

\frac{\partial{L(a,y)}}{\partial{w_{1}}}=dw_{1}=x_{1}*dz

\frac{\partial{L(a,y)}}{\partial{w_{2}}}=dw_{2}=x_{2}*dz

\frac{\partial{L(a,y)}}{\partial{b}}=db=dz

参数求解:
w_{1}:=w_{1}-\alpha dw_{1}

w_{2}:=w_{2}-\alpha dw_{2}

b:=b-\alpha db

3. 伪代码实现

J=0,dw_{1}=0,dw_{2}=0,db=0
for i=1 to m
z^{(i)}=w^{T}x^{(i)}+b
a^{(i)} = \sigma(z^{(i)})
Jt = -[y^{(i)}loga^{(i)}+(1-y^{(i)})log(1-a^{(i)})]
dz^{i}=a^{(i)}-y^{(i)}
dw_{1}+=x^{i}_1*dz^{(i)}
dw_{2}+=x^{i}_2*dz^{(i)}
b+=\alpha dz^{(i)}
end for
J /=m,dw_1/=m,dw_2/=m,db/=m
w_{1}:=w_{1}-\alpha dw_{1}
w_{2}:=w_{2}-\alpha dw_{2}
b:=b-\alpha db

Vectorization

do the caculation without for loop to save time


Vectorization.png

4. 神经网络编程准则

只要可能,避免显式的for循环。

avoidloop.png

使用numpy的系统函数来进行矩阵或者向量的批量模式运算。
matrixexp.png

把之前的编程伪代码用上述规则进行如下修改:vectCaculation.png
VectorizationCa.png

VectorizationProgramm.png

未完待续。。。

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

推荐阅读更多精彩内容