欢迎关注WX公众号:【程序员管小亮】

专栏——深度学习入门笔记

声明

1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。
2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。
3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。
4)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进添砖加瓦。

文章目录

  • 欢迎关注WX公众号:【程序员管小亮】
    • 专栏——深度学习入门笔记
    • 声明
    • 深度学习入门笔记(二):神经网络基础
      • 1、二分类
      • 2、逻辑回归
      • 3、逻辑回归的代价函数
      • 4、梯度下降法
        • 梯度下降法可以做什么?
        • 梯度下降法的形象化说明
        • 梯度下降法的细节化说明
        • 梯度下降法的具体化说明
      • 5、逻辑回归的梯度下降
      • 6、m 个样本的梯度下降
    • 推荐阅读
    • 参考文章

深度学习入门笔记(二):神经网络基础

1、二分类

下面要学习的是神经网络的基础知识,其中需要注意的是,当实现一个神经网络的时候,需要知道一些非常重要的技术和技巧,闲言少叙,直接开搞。

逻辑回归(logistic regression) 是一个用于 二分类(binary classification) 的算法。首先从一个问题——猫咪识别开始说起,如果识别这张图片为猫,则输出标签1作为结果;如果识别出不是猫,那么输出标签0作为结果。用字母 yyy 来表示输出的结果标签,如下图所示:

如上图所示,一张图片在计算机中对应三个矩阵,分别对应图片中的红、绿、蓝三种颜色通道,且图片大小与三个矩阵相同,分别对应图片中红、绿、蓝三种像素的强度值。

为了把这些像素值转换为 特征向量 xxx,需要定义特征向量表示图片,把像素都取出来,也就是矩阵中的数据,例如255、231等等,取完红色像素接着是绿色像素,最后是蓝色像素,直到得到特征向量,也就是图片中红、绿、蓝像素排列的值。如果图片的大小为64x64像素,那么 xxx 的总维度,是64 * 64 * 3,也即是三个像素矩阵中的像素总量(12288)。

现在用 nx=12288n_x=12288nx​=12288 来表示输入特征向量的维度,有时为了简洁,直接用小写的 nnn 来表示。所以二分类问题中,最终的目标就是习得一个分类器,以图片特征向量作输入,预测输出结果 yyy 是1还是0,即预测图片中是否有猫。

符号定义

xxx:表示一个 nxn_xnx​ 维数据,为输入数据,维度为 (nx,1)(n_x,1)(nx​,1);

yyy:表示输出结果,取值为 (0,1)(0,1)(0,1);

(x(i),y(i))(x^{(i)},y^{(i)})(x(i),y(i)):表示第 iii 组数据,可能是训练数据,也可能是测试数据,此处默认为训练数据;

X=[x(1),x(2),...,x(m)]X=[x^{(1)},x^{(2)},...,x^{(m)}]X=[x(1),x(2),...,x(m)]:表示所有的训练数据集的输入值,放在一个 nx×mn_x×mnx​×m 的矩阵中,其中 mmm 表示样本数目;

Y=[y(1),y(2),...,y(m)]Y=[y^{(1)},y^{(2)},...,y^{(m)}]Y=[y(1),y(2),...,y(m)]:对应表示所有训练数据集的输出值,维度为 1×m1×m1×m。

2、逻辑回归

对于二元分类问题,给定输入特征向量 XXX,它可能对应一张图片,如果想识别这张图片是否是猫的图片,怎么做?

定义算法的输出预测为 y^\hat{y}y^​,也就是对实际值 yyy 的估计。更正式地来说,y^\hat{y}y^​ 表示 yyy 等于1的一种可能性或者是几率,当然,前提条件是给定了输入特征 XXX。

上面说过 XXX 是一个 nxn_xnx​ 维的向量,相当于有 nxn_xnx​ 个特征的特征向量。www 表示逻辑回归的参数,也是一个 nxn_xnx​ 维向量,因为 www 实际上是 特征权重,维度与特征向量相同。参数里面还有 bbb,是一个实数,表示偏差。所以给出输入以及参数后,一个可以尝试却不可行的结果是 y^=wTx+b\hat{y}={{w}^{T}}x+by^​=wTx+b。

为什么说可以尝试,却不可行呢?注意,这时得到的实际上是线性回归时用到的一个关于输入 xxx 的线性函数,但这对二元分类问题来讲,却不是一个非常好的算法。因为 y^\hat{y}y^​ 表示实际值 yyy 等于1的几率,也就是说 y^\hat{y}y^​ 应该在0到1之间

这是一个需要解决的问题,因为 wTx+b{{w}^{T}}x+bwTx+b 可能比1要大得多,更有甚者,可能是一个负值,但是我们想要的是一个概率。因此,在逻辑回归中,输出是 y^\hat{y}y^​ 作为自变量的 sigmoid 函数的输出值。有点绕,其实简单来说, y^=sigmoid(y)\hat{y} = sigmoid(y)y^​=sigmoid(y)。

如上图所示,就是 sigmoid 函数的图像,它平滑地从0走向1,这里的作用其实还是把线性函数转换为非线性函数。

关于 sigmoid 函数的公式是这样的

σ(z)=11+e−z\sigma \left( z \right)=\frac{1}{1+{{e}^{-z}}}σ(z)=1+e−z1​

这里要注意的是,从图像可以看出两点:

  • 如果 zzz 非常大,那么 e−z{{e}^{-z}}e−z 将会接近于0,σ(z)\sigma \left( z \right)σ(z) 会非常接近1。
  • 相反地,如果zzz 非常小或者一个绝对值很大的负数,那么 e−z{{e}^{-z}}e−z 会变得很大,σ(z)\sigma \left( z \right)σ(z) 就接近于0。

因此当实现逻辑回归时,y^\hat{y}y^​ 在0到1之间,成为对 y=1y=1y=1 概率的一个很好的估计。

3、逻辑回归的代价函数

为什么需要代价函数(也翻译作成本函数)?

为了训练逻辑回归模型,得到参数 www和参数 bbb。

看到这里你可能有点蒙逼,先来看一下损失函数吧,你可能会问那 什么是损失函数? 损失函数又叫做 误差函数,用来衡量算法的运行情况,Loss function:L(y^,y)L\left( \hat{y},y \right)L(y^​,y).。通过这个 LLL,也就是损失函数,来衡量预测输出值和实际值有多接近

一般的损失函数有预测值和实际值的平方差或者它们平方差的一半,但是通常在逻辑回归中不这么做,为什么?因为在学习逻辑回归参数时,会发现优化目标不是 凸优化在凸优化中局部最优值必定是全局最优值),只能找到多个局部最优值,很可能找不到全局最优值。所以虽然平方差是一个不错的损失函数,但在逻辑回归模型中定义的是另外一个损失函数,即

L(y^,y)=−ylog⁡(y^)−(1−y)log⁡(1−y^)L\left( \hat{y},y \right)=-y\log(\hat{y})-(1-y)\log (1-\hat{y})L(y^​,y)=−ylog(y^​)−(1−y)log(1−y^​)

为什么要用这个函数作为逻辑损失函数?来举两个例子你就懂了,首先确定一件事,无论解决什么问题,你肯定想要误差尽可能地小。好了,现在来看例子吧:

  • 当 y=1y=1y=1 时损失函数 L=−log⁡(y^)L=-\log (\hat{y})L=−log(y^​),如果想要损失函数 LLL 尽可能得小,那么 y^\hat{y}y^​ 就要尽可能大,因为 sigmoid 函数取值 [0,1][0,1][0,1],所以 y^\hat{y}y^​ 会无限接近于1。

  • 当 y=0y=0y=0 时损失函数 L=−log⁡(1−y^)L=-\log (1-\hat{y})L=−log(1−y^​),如果想要损失函数 LLL 尽可能得小,那么 y^\hat{y}y^​ 就要尽可能小,因为 sigmoid 函数取值 [0,1][0,1][0,1],所以 y^\hat{y}y^​ 会无限接近于0。

而在逻辑回归中,我们期待的输出就是1或者0,是不是这个损失函数更好呢?

深度学习入门笔记(二):神经网络基础相关推荐

  1. 深度学习入门笔记(五):神经网络的编程基础

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  2. 深度学习入门笔记(二十):经典神经网络(LeNet-5、AlexNet和VGGNet)

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  3. 深度学习入门笔记(十九):卷积神经网络(二)

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  4. 深度学习入门笔记系列 ( 二 )——基于 tensorflow 的一些深度学习基础知识

    本系列将分为 8 篇 .今天是第二篇 .主要讲讲 TensorFlow 框架的特点和此系列笔记中涉及到的入门概念 . 1.Tensor .Flow .Session .Graphs TensorFlo ...

  5. 深度学习入门笔记(五):神经网络的学习

    专栏--深度学习入门笔记 推荐文章 深度学习入门笔记(一):机器学习基础 深度学习入门笔记(二):神经网络基础 深度学习入门笔记(三):感知机 深度学习入门笔记(四):神经网络 深度学习入门笔记(五) ...

  6. 深度学习入门笔记(四):神经网络

    专栏--深度学习入门笔记 推荐文章 深度学习入门笔记(一):机器学习基础 深度学习入门笔记(二):神经网络基础 深度学习入门笔记(三):感知机 深度学习入门笔记(四):神经网络 深度学习入门笔记(五) ...

  7. 深度学习入门笔记(十八):卷积神经网络(一)

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  8. 深度学习入门笔记(十二):深度学习数据读取

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  9. 深度学习入门笔记(七):深层神经网络

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

最新文章

  1. matlab求传递函数在某个频率点的增益_【干货分享】轻松弄懂开关电源TL431环路补偿传递函数推导...
  2. [Python]程序结构与控制流
  3. python tts 保存_Python 文件和目录操作学习
  4. iOS回顾笔记( 01 )-- XIB和纯代码创建应用的对比
  5. 任正非卸任上海华为董事;百度“云手机”今日线上发布;Inkscape 1.0 RC 版发布 | 极客头条...
  6. 计算机学院金海教授当选2019IEEE会士
  7. 【元胞自动机】基于matlab六边形网格六方元胞自动机【含Matlab源码 1362期】
  8. pve万兆网卡驱动_家庭基础万兆网络——最简单的方案
  9. 电容或电感的电压_如何通俗的理解电流,电压,电阻,电容和电感?
  10. Tortoise ORM 简单使用
  11. 创建 Windows XP 图标
  12. 快速了解电力IEC104协议规约
  13. 数组的常用算法(1)--由“为了集齐108将买多少袋干脆面”展开去
  14. MAC版本subline text快捷键大全
  15. php户型图识别,五大指标教你看懂户型图
  16. 你应该看得懂的RecyclerView嵌套
  17. 【Android-Broadcast】广播的权限
  18. linux关于登录变成192login
  19. 计算机面试常见题目-网络
  20. 前端面试题----html css

热门文章

  1. 查找字符串fing()函数
  2. 设备跟服务器对接需要什么文档,『OneNET设备云平台』云平台对接服务_智能设备...
  3. struct stat结构体中st_mode参数的含义
  4. 算法设计课第十周作业
  5. 用户 不在 sudoers 文件中。此事将被报告。
  6. python 无脸男
  7. sws_scale函数像素数据格式的转换yuv转rgba
  8. 我用Python分析1585家电商车厘子销售数据,发现这些秘密!
  9. java 电子时钟_java多线程编程制作电子时钟
  10. 打蚊子表情包_打蚊子表情包 - 打蚊子微信表情包 - 打蚊子QQ表情包 - 发表情 fabiaoqing.com...