网易云课堂吴恩达Andrew Ng深度学习笔记(二)
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深度学习笔记(二)相关推荐
- 网易云课堂吴恩达Andrew Ng深度学习笔记(四)
01.神经网络和深度学习 第四周 深层神经网络 所谓深层神经网络,字面上对应于浅层神经网络,即具有2层及以上的隐藏层. 其正向传播过程一样,z[l] = w[l]a[l-1] + b[l], a[ ...
- 吴恩达 Andrew Ng深度学习deep learning.ai作业
这是作业的链接 https://blog.csdn.net/u013733326/article/details/79827273 感谢博主的分享
- 吴恩达《机器学习》学习笔记二——单变量线性回归
吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...
- 下载量过百万的吴恩达机器学习和深度学习笔记更新了!(附PDF下载)
今天,我把吴恩达机器学习和深度学习课程笔记都更新了,并提供下载,这两本笔记非常适合机器学习和深度学习入门.(作者:黄海广) 0.导语 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在g ...
- 【斯坦福公开课-机器学习】1.机器学习的动机和应用(吴恩达 Andrew Ng)
文章目录 0三个目标 0先修课程要求 基本工具 1-网址 2-邮箱 3-本系列课程链接 1机器学习的定义 1-1非正式定义 1-2正式的定义 2监督学习(Supervised Learning) 2- ...
- 吴恩达神经网络和深度学习
[前言] 在学习了深度学习和神经网络之后,为什么我要以博客的形式来做笔记?这CSDN有那么多的优秀文章,我自己写的都比不上 别人的我写的真的有意义吗,为什么我要浪费大量的时间去做这项工作?我相信一句话 ...
- 笔记 | 吴恩达Coursera Deep Learning学习笔记
向AI转型的程序员都关注了这个号☝☝☝ 作者:Lisa Song 微软总部云智能高级数据科学家,现居西雅图.具有多年机器学习和深度学习的应用经验,熟悉各种业务场景下机器学习和人工智能产品的需求分析.架 ...
- 新建网站了!Github标星过万的吴恩达机器学习、深度学习课程笔记,《统计学习方法》代码实现,可以在线阅读了!...
吴恩达机器学习.深度学习,李航老师<统计学习方法>,可以说是机器学习入门的宝典.本文推荐一个网站"机器学习初学者",把以上资源的笔记.代码实现做成了网页版,可以在线阅读 ...
- 吴恩达deeplearning.ai深度学习课程空白作业
吴恩达deeplearning.ai深度学习课程的空白作业,包括深度学习微专业五门课程的全部空白编程作业,经多方整理而来.网上找来的作业好多都是已经被别人写过的,不便于自己练习,而且很多都缺失各种 ...
最新文章
- 8位alu运算器(vhdl语言)_C语言中signed char类型,能表示-128到127,为什么负数多一位?...
- R语言ggplot2可视化分面图(faceting)、可视化分面条形图(facet_wrap bar plot)、使用strip.text函数自定义分面图每个分面标题条带strip的大小(cutomi
- Image Generation
- 手动设计简单的Token验证
- sql 精读(二) 标准 SQL 中的编号函数
- AT2165-[AGC006D]MedianPyramidHard【二分,贪心】
- oracle基础入门(四)
- React Natvie Fetch工具类
- 计算机课打字评课,三年级信息技术《键盘一家》评课稿
- AcWing 120 防线
- bestCoder 百度之星程序设计资格赛 1005下棋
- GetLastError返回值大全(英文最新版)(1000-4000)
- 共轭函数两个性质的证明
- 一些实用的安卓UI设计工具
- 计算矩形面积的程序python_python实现用类读取文件数据并计算矩形面积
- markdown编辑器自学+使用说明
- java点菜系统(纯Java简易版)
- java 时间段重叠_java 判断两个时间段是否重叠的案例
- (OK) 华为全网通 honor 5x - 成功将 KIW-AL10C00B258 升级到 KIW-AL10C00B430
- SSH-keygen的用法学习