神经网络和深度学习

bilibili的吴恩达 和网易的云课堂

识别一张图片是不是猫,的二分类 使用逻辑回归。

对于一个猫的图片。假如长宽都是64(RGB),那么输入向量就是64*64*3。

(x,y)是一个样本 一共有m个样本

对于一个给定的特征向量X(图片信息),需要知道Y hat(是否为猫的概率0-1)

y是标签。y hat是计算值。

就是得到一个 y=f(x)的函数。首先我们假定这个函数是个线性函数。

y hat=wT*x+b

对于二分类。有这个函数得到的y肯定不是位于0-1之前。所以我们对这个假定函数再做个处理,加上sigmod函数

把y值限定在0-1之间。接下来就是去寻找合适的w和b 使得每次代入特征向量x的时候能够得到一个比较准确的y值。

接下来就是如何来计算w以及b。我们用上标来代表每个样本和标签。

1 首先需要定义一个损失函数。用来计算计算值和估计值之前的差距。Loss Function(单个样本)

损失函数值越大,表明真实值和估计值差距很大,我们需要的是损失函数最小

我们可以使用 平方差来估计。L(y hat,y)=1/2(y hat - y )^2。实际上不这么用是因为到时候用梯度下降法可能不太好用。

或者有可能这个损失函数是非凸的,可能找不到最优解。

这里使用L(y hat ,y)= - (y log (y hat) + ( 1 -  y ) log ( 1 -  y hat ) )

假设用极端准确和极端不准去的值来代入这个函数  ( log 0 不存在,所以取一个非常接近0的值)

y ,y hat = 0,1      - ( 0 log 1 + (1-0) log ( 1 - 1 ) ) = +无穷

y ,y hat = 1,0      +无穷

y ,y hat = 0,0      0 

y ,y hat = 1,1      0

所以如果估计值和标签一致,那么损失为0.如果误差很大,那么也会给一个很大的损失值。 

 

2我们再定义一个代价函数。代表所有样本的误差值。

这里我们就用一个平均值来计算吧。

J(w,b)=1/m sigma(from i 1 to n) L(y hat i ,y i)

 

 

所以我们需要选择合适的w和b使得J(w,b)最小

 

首先初始化一个权重。w,b可以取任意值。

采用梯度下降法 下降的方式如下。

w=w- alpha * [ d (j w) / d (w) ]

alpha就是学习速率  [ d (j w) / d (w) ]是在w点的斜率

b也采取这样的形式 迭代 。

 

 

 

 

 

 

 

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐