01.神经网络和深度学习

第二周  神经网络基础

先说明最简单的二分类,即可以把结果分为0和1两类,或者说是否两种的分类情况。

比如说判定图片中是否有猫,标记为有(1)或者无(0)。

特征则是图片中像素点RGB三色的深度,对应于64x64像素的图像,特征量为64x64x3= 12288。

为了操作解释方便,我们会把特征进行排列,重组成纵列。

一个特征对应一个标签,最后组成数据对(x,y)

m个数据组合后把特征和标签组合成X和Y

logistic regression,监督学习的一种,输出为0或者1.

在已知x的情况下,求y的概论,其中x为上面说明的特征,y为标签。

我们这里定义为一般公式,引入参数w和b

单纯的w*x+b类似于一元线性方程,无法得到一个[0,1]范围内的数值,还需要用到sigmoid function(这点在后面会优化,因为sigmoid中间有一段缓慢变化区,不利于函数收敛)

为了训练参数w和b,我们需要定义一个cost function来判断怎样的参数才是合适的。

cost function是在当前训练集下的,而loss(error) function是指针对某个样本的。cost function 是loss function的平均。

对loss function,我们希望我们计算出来的y^与真实的y无限接近。

xi是指某个特定的样本,其会对于到不同的y。

在基本概念中,如果我们要两个量接近,会让两者之差为0.

但上式这种形式中利用梯度下降法时会产生多个局部最优解,无法得到全局最优解。

y^ 可以理解为在给定训练样本x的情况下y等于1的概率,这样可以得到下列公式

P(y|x)就是我们希望求解出结果的概率,越大越好。log为单调函数,在公式两边加上log后

可以看到loss function的雏形,P越大,L就要越小。

在logistic regression中使用的loss function是

其中L越小越好,log是单调函数,故实现了y== 1时y^也需要趋近于1(最大即为1)

y==0时,y^也需要趋近于0(最小即为0),使得1-y^更可能大。

cost function 是不同训练样本下loss function的集合,在无特殊偏重的情况下(样本特征平均分布,无离散点)求平均即可

从概率的角度出发,可以这样理解

相互独立事件的和概率等于各概率的乘积,加上log后变化为求和。

有了J(w,b)后我们就可以拿来评估得到的参数w,b效果如何,下面就进入到梯度下降法,如何利用J来逐步迭代实现(w,b)的变化

学习过程中,参数变化:

dw是J对w的导数,α是学习速率,代表收敛速度。越大收敛越快,但也越容易收敛困难。

在梯度下降的过程中,就是按照dw来逐步更新w.

阿尔法是大于0,如果w在最优解右边,dw为正数,按照公式,w减少。

当w在最优解左边,dw为负数,按照公式,w增加。

越接近最优解,dw绝对值越小,变化越小。梯度下降法就是按照J的梯度来调整参数。

w,b两个参数都是按照此方法进行调整。dw,db可以理解为导数,用函数理解就是在特定点上的曲线斜率,再专业一些可以叫偏微分。

Computation Graph是神经网络计算中步骤说明(我的个人理解),先通过预设的w,b公式,用训练集计算出当前(w,b)下的输出值,再计算当前的dw,db,代入更新w,b。重复这种前向传播和反向传播的运算。

用个简单的公式J(a,b,c) = 3(a+bc)来说明,用公式细分为三部分:u = bc, v = a + u , J = 3v

在计算导数时把导数逆向一层层传递下去的,也是computation graph的核心思想。

dJ/da = dJ/dv*dv/da , dJ/db = dJ/dv*dv/du*du/db, dJ/db = dJ/dv*dv/du*du/dc

在logistic regression上利用梯度下降法,下面事例只用2维特征说明,

回忆公式

求解每一步的导数

dL/dz = dL/da*da/dz = a-y

dz/dw1 = x1, dz/dw2 = x2,  dz/db = 1

上式利用到了训练集的特征{x1,x2...},所以在一个多训练样本m的情况下,

dw1也不仅是dLi/dw1,而是下式这种平均形式

也就是把所有{xi,yi}对应的dw1求解出来后再进行平均。用伪代码表示为

有两个循环,外层循环是循环不同的训练样本1 to m,里面循环是循环不同的模型参数1 to n+1,n对应特征维度。

两层循环结束后再除以m平均。

Vectorization,向量化,是机器学习中重要的一环,也就是减少显式的for循环,以此减少运算时间。

这有些像MATLAB中是把数据定义为矩阵,矩阵的加减乘除有特殊的内置函数处理,不需要我们自己写for循环来做基础运算。

教程中是说用python或者numpy的.dot(x,y)来执行向量运算。

再底层就是计算机的并行运算,这部分可以不做深究。

套用在logistic regression里面,正向计算和反向传递都可以向量化,

    

求解过程经过向量化后:

我理解的向量化,就是用向量运算的思路思路来代替单纯的数值运算。这确实很有用,在我以前的代码中经常是大段多嵌套的for循环,算法的执行效率惨不忍睹。

python里面的广播boardcasting等于是向量之间或者向量和数据之间运算时,会按照最大的维度进行扩展,然后再执行逐个元素的运算,比较像MATLAB里面的.*/.+这类操作。

在函数运算前进行reshape()是一种保证,保证其行列数量是按照我们期望的进行排列

另外还需要注意生成向量时的操作,不用生成为rank 1 array,这既不是行向量,也不是列向量。

错误做法:

仅管可以通过reshape改变过来,但也不推荐使用。

正确的做法是生成时表明行列2个数值。

必要时也可以加上如下语句进行保证确认

网易云课堂吴恩达Andrew Ng深度学习笔记(二)相关推荐

  1. 网易云课堂吴恩达Andrew Ng深度学习笔记(四)

    01.神经网络和深度学习 第四周   深层神经网络 所谓深层神经网络,字面上对应于浅层神经网络,即具有2层及以上的隐藏层. 其正向传播过程一样,z[l] = w[l]a[l-1] + b[l], a[ ...

  2. 吴恩达 Andrew Ng深度学习deep learning.ai作业

    这是作业的链接 https://blog.csdn.net/u013733326/article/details/79827273 感谢博主的分享

  3. 吴恩达《机器学习》学习笔记二——单变量线性回归

    吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...

  4. 下载量过百万的吴恩达机器学习和深度学习笔记更新了!(附PDF下载)

    今天,我把吴恩达机器学习和深度学习课程笔记都更新了,并提供下载,这两本笔记非常适合机器学习和深度学习入门.(作者:黄海广) 0.导语 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在g ...

  5. 【斯坦福公开课-机器学习】1.机器学习的动机和应用(吴恩达 Andrew Ng)

    文章目录 0三个目标 0先修课程要求 基本工具 1-网址 2-邮箱 3-本系列课程链接 1机器学习的定义 1-1非正式定义 1-2正式的定义 2监督学习(Supervised Learning) 2- ...

  6. 吴恩达神经网络和深度学习

    [前言] 在学习了深度学习和神经网络之后,为什么我要以博客的形式来做笔记?这CSDN有那么多的优秀文章,我自己写的都比不上 别人的我写的真的有意义吗,为什么我要浪费大量的时间去做这项工作?我相信一句话 ...

  7. 笔记 | 吴恩达Coursera Deep Learning学习笔记

    向AI转型的程序员都关注了这个号☝☝☝ 作者:Lisa Song 微软总部云智能高级数据科学家,现居西雅图.具有多年机器学习和深度学习的应用经验,熟悉各种业务场景下机器学习和人工智能产品的需求分析.架 ...

  8. 新建网站了!Github标星过万的吴恩达机器学习、深度学习课程笔记,《统计学习方法》代码实现,可以在线阅读了!...

    吴恩达机器学习.深度学习,李航老师<统计学习方法>,可以说是机器学习入门的宝典.本文推荐一个网站"机器学习初学者",把以上资源的笔记.代码实现做成了网页版,可以在线阅读 ...

  9. 吴恩达deeplearning.ai深度学习课程空白作业

      吴恩达deeplearning.ai深度学习课程的空白作业,包括深度学习微专业五门课程的全部空白编程作业,经多方整理而来.网上找来的作业好多都是已经被别人写过的,不便于自己练习,而且很多都缺失各种 ...

最新文章

  1. 8位alu运算器(vhdl语言)_C语言中signed char类型,能表示-128到127,为什么负数多一位?...
  2. R语言ggplot2可视化分面图(faceting)、可视化分面条形图(facet_wrap bar plot)、使用strip.text函数自定义分面图每个分面标题条带strip的大小(cutomi
  3. Image Generation
  4. 手动设计简单的Token验证
  5. sql 精读(二) 标准 SQL 中的编号函数
  6. AT2165-[AGC006D]MedianPyramidHard【二分,贪心】
  7. oracle基础入门(四)
  8. React Natvie Fetch工具类
  9. 计算机课打字评课,三年级信息技术《键盘一家》评课稿
  10. AcWing 120 防线
  11. bestCoder 百度之星程序设计资格赛 1005下棋
  12. GetLastError返回值大全(英文最新版)(1000-4000)
  13. 共轭函数两个性质的证明
  14. 一些实用的安卓UI设计工具
  15. 计算矩形面积的程序python_python实现用类读取文件数据并计算矩形面积
  16. markdown编辑器自学+使用说明
  17. java点菜系统(纯Java简易版)
  18. java 时间段重叠_java 判断两个时间段是否重叠的案例
  19. (OK) 华为全网通 honor 5x - 成功将 KIW-AL10C00B258 升级到 KIW-AL10C00B430
  20. SSH-keygen的用法学习

热门文章

  1. php 半角 全角 转换,PHP半角/全角转换函数
  2. nds文件解包_下載wwpacker 1.84 更新 給wad解包和封包的工具
  3. 百度文心一言可以完胜ChatGPT的4点可能性
  4. MySQL8免安装版安装教程
  5. 注解(annotations)列表
  6. hdu 2298 Radar 重复覆盖
  7. 科研工具--论文-作者-影响力等-精准制导-检索网站
  8. 一文学会VOS中限制某个地区的固话和手机
  9. JavaScript红皮书学习笔记
  10. Android系统设置选项的包名