说明:本文章为自己的笔记,以自己看的懂为标准,会省略一些内容

视频是在B站上面看的,连接为:https://www.bilibili.com/video/BV1FT4y1E74V

本章笔记记有如下内容:

  1. 结构化,非结构化数据
  2. Logistic回归基本概念
  3. sigmoid函数
  4. 损失函数
  5. 陈本函数
  6. 梯度下降方法
  7. 导数
  8. 计算图
  9. Logistic回归中梯度下降方法
  10. m个样本中Logistic回归的梯度下降
  11. 关于逻辑回归损失函数的解释

 

1.结构化数据(Structured Data),非结构化数据(Unstructured Data)

  • 结构化数据:如数据库,每一个数据都有其对应的规范,比如 学生类里面有 学号,姓名,成绩等等,这些都属于结构化的数据
  • 非结构化数据:如原始音频,图像,一段文字

结构化数据往往是计算机使用较为理想的,而非结构化数据往往指的是一些没有经过处理的,较为原始的数据。

 

一.Logistic 逻辑回归

Logistic用于二分类(binary classification)算法

x输入 ——–> y输出

输入一张64*64彩色图片(假设是jpg,三通道,红绿蓝),特征向量x就是64*64*3 = 12288,分别就是三个通道的全部像素值,可以直接设 n = nx =12288,来表示输入的特征向量x的维度。

(x,y) 表示一个单独的样本 , y属于 {0,1}(二分样本)

我们常常用 m = m_train 表示训练样本 , m = m_test 表示测试样

X(大写),表示整个输入的矩阵,同理Y

Python中常用X.shape = (nx,m)这样取数据 ,Y.shape = (1,m)

1.:sigmoid函数

sigmoid函数也叫Logistic函数,用于隐层神经元输出,取值范围为(0,1),它可以将一个实数映射到(0,1)的区间,可以用来做二分类。在特征相差比较复杂或是相差不是特别大时效果比较好。Sigmoid作为激活函数有以下优缺点:
优点:平滑、易于求导。
缺点:激活函数计算量大,反向传播求误差梯度时,求导涉及除法;反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。
Sigmoid函数由下列公式定义
其对x的导数可以用自身表示:
Sigmoid函数的图形如S曲线

2.损失函数L

通常使用,1/2*(y帽和y的差的平方)
对于损失函数直观的理解为:我们通过定义这个损失函数L,来衡量你的预测输出值y帽,和y的实际值有多接近。误差的平方。
但是 在逻辑回归 中,我们习惯定义(上面那个不适合逻辑回归,所以定义一个新的)
损失函数尽可能小为好,损失函数定义是在单个训练样本中定义的,它衡量了在单个训练样本上的表现。

3.成本函数J

成本函数 是基于参数的总成本
注意成本函数有的时候会乘上1/2,乘上1/2是为了方便后面求偏导数时结果更加简洁,之所以能乘上1/2是因为乘上这个系数后对求解风险函数最优值没有影响。
我们的目标就是要最小化风险函数,使得我们的拟合函数能够最大程度的对目标函数y进行拟合,
在训练logistic 要选择合适的w和b,让训练成本J更加小。
总结:
损失函数:衡量单一训练样例的效果
成本函数:衡量参数w和b的效果在全部数据集上的效果

4.梯度下降方法

梯度下降法(gradient descent),又名最速下降法(steepest descent)是求解无约束最优化问题最常用的方法,它是一种迭代方法,每一步主要的操作是求解目标函数的梯度向量,将当前位置的负梯度方向作为搜索方向(因为在该方向上目标函数下降最快,这也是最速下降法名称的由来)。梯度下降法特点:越接近目标值,步长越小,下降速度越慢。
(注:国内的数学教材对于凹凸函数和国外的很多教材所使用的凹凸函数是刚好反过来的)
梯度下降的方法是用 w = w – α * (对J成本函数求对w的偏导数)【同理求b】

5.导数,

个人建议自己看一下考研数学里面的东西(包括高等数学,线性代数,概率论),无论是汤家凤的还是张宇的都OK,吴恩达的讲的太言简意赅了,学AI请务必拿回高等数学的微积分。
微积分:calculus
导数:derivatives

6.计算图

整体来说就是教你,怎么样做流程,将输入放在一端,输出在另一端,然后中间每一个步骤合成,最终生成最终答案。这是一种思路,一种思维。
这样做的一种好处就是,简化后的总式子,比较好做导数,比较好做导数就容易求出梯度下降
由J引起的求导变化一路向前传导,传到a,u再继续变成影响a,b,c(微积分上叫做链式法则)。这也就是【向前传播】

7.逻辑回归中的梯度下降方法(单个)

参考本图,有两个输入,x1w1,x2w2,主要内容上面都可以找到,这个图解释了如何用来训练一个单个样本。但是实际情况是用数据集,有m个数据样本。

8.m个样本中的逻辑回归中的梯度下降

请先回顾一下成本函数J

计算中有两个缺点

  • 两个for循环,1个是遍历m样本,2是遍历n特征,但是在深度学习中,在代码中显式使用for循环,会使得代码算法很低效,因为数据集会非常大,不用显式for循环,或者少用,将会很大程度上的帮助处理更大的数据,可以考虑使用一中向量化数据的方法(vectorization)帮助代码减少显式for循环。

9.关于逻辑回归损失函数的解释

回顾一下这个函数

然后将这两个if条件合并,就可以得到 p(y|x),成本函数,为什么最后添加负号,因为我们在逻辑回归中,需要最小化损失函数,因此最小化损失函数就是最大化log( p(y|x) )。

那么对于cost function成本函数呢?

假设所有的训练样本服从同一分布且相互独立,也就是 独立同分布的 ,所有这些样本的联合概率,就是每个样本概率的乘积,从1到m的p(y^(i) | x^(i))的概率乘积,要做最大似然估计,需要寻找一组参数,使得给定样本的观测值概率最大,但令这个概率最大化,等价于令其对数最大化。

所以对 Πp(y^(i) | x^(i)) 就会变成 ∑log p(y^(i) | x^(i) ),也等于 -L(y帽^(i) , y(i)),在统计学中,有一个方法,叫做最大似然估计(Maximun likelihood estimation)即:求出一组参数,使这个式子取最大值。

这样就可以推导出前面给出的logistic回归的,成本函数J(w,b),由于训练模型时,目标是让成本函数最小化,所以我们不是直接用最大似然估计概率,而是要去掉负号,最后为了方便,直接对成本函数进行进行一个1/m的缩放【注:某些老师的课程缩放可能是1/2m,这和实际情况有关】

对于似然的百科可以看这个:https://baike.baidu.com/item/%E6%9E%81%E5%A4%A7%E4%BC%BC%E7%84%B6%E4%BC%B0%E8%AE%A1/3350286?fr=aladdin

 


0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注