deeplearning.ai 神经网络和深度学习 week2 神经网络基础 听课笔记
1. Logistic回归是用于二分分类的算法。
对于m个样本的训练集,我们可能会习惯于使用for循环一个个处理,但在机器学习中,是把每一个样本写成一个列向量x,然后把m个列向量拼成一个矩阵X。这个矩阵是nx*m大小,nx是每个样本的特征数量,m是样本个数,X.shape=(nx,m)。也可以把特征写成横向量然后竖着拼成m*n的矩阵,NG说前一种列向量的表示方便运算。输出Y是1*m的向量,Y.shape=(1,m)。
把样本表示成矩阵形式后,可以对它进行线性操作wTx+b,由于二分分类的标签为0或1,所以需要把线性变换的值变换到[0, 1]之间,即y_hat = σ(wTx+b),这里σ(z)=1/(1+e-z)就是sigmoid函数。
Loss (error) function描述了预测的输出y_hat和真实的标签y有多接近。误差平方是个很符合直觉的选择,但是不方便梯度下降法求解。在logistic回归中使用的loss funciton是L(y_hat, y) = -( ylog(y_hat) + (1-y)log(1-y_hat) ). 直观地说为什么这个loss function合理呢?如果y=1,L(y_hat ,y)=-ylog(y_hat),L越小越好,所以y_hat越大越好,又因为输出在[0, 1]区间,所以y_hat会趋向于1;如果y=0, L=-log(1-y_hat), y_hat会趋向于0。更深层次的说,这里的loss function描述的是概率的log,而如果每个样本都是独立同分布的,则整体的概率是每个样本概率的累乘,取log之后就是累加。
Loss function描述了单个样本的损失,Cost function描述了在整个样本空间的损失,J(w, b)是所有样本的loss function的平均值。这种方式构造的cost funciton是凸函数,使得优化问题是一个凸优化问题。
Logistic回归可以被看作是非常小的神经网络。
2. 神经网络的计算过程分为前向传播和反向传播,前向传播是计算神经网络的输出,反向传播是计算对应的梯度。
可以用计算图把复杂计算过程拆分成简单计算的堆叠。
在Logistic回归的例子中,算法使用了2个嵌套的for循环,外层for循环遍历所有的样本,内层for循环遍历单个样本内所有的特征。这样做的缺点是for循环效率低,特别是当数据量越来越大的情况下。所以就要使用向量化技术摆脱for循环。
3. 向量化。为计算 z=wTx+b,w和x都是n*1的向量,python中 z=np.dot(w,x)+b 会比for循环快很多(NG随便跑了个例子就相差300倍的耗时)。这是因为这种内置的dot运算更好地利用了并行化计算SIMD(Single Instruction Multiple Data)。相比于CPU,GPU更擅长SIMD。所以只要有可能,就避免使用for循环。
4. python中的broadcasting机制:做加减乘除等运算的时候,自动会把标量,或者小矩阵,扩展成和大矩阵一样的大小,然后元素对元素的运算。这个机制有好有坏,好处是方便,坏处是易错。
一些建议:
1)不推荐使用 a = np.random.randn(5),得到的a是秩为1的数组,a.shape = (5, ),这种数组和行向量、列向量都不一样。
推荐使用 a = np.random.randn(5, 1),这是指明a为列向量,a.shape = (5, 1)。
2)如果不确定矩阵的形状,可以用 assert( a.shape == (5, 1) )。
3)为保险都可以使用 a = a.reshape(5, 1),reshape的计算很快,所以不用担心耗时。
deeplearning.ai 神经网络和深度学习 week2 神经网络基础 听课笔记的更多相关文章
- deeplearning.ai 改善深层神经网络 week1 深度学习的实用层面 听课笔记
1. 应用机器学习是高度依赖迭代尝试的,不要指望一蹴而就,必须不断调参数看结果,根据结果再继续调参数. 2. 数据集分成训练集(training set).验证集(validation/develop ...
- deeplearning.ai 神经网络和深度学习 week2 神经网络基础
1. Logistic回归是用于二分分类的算法. 对于m个样本的训练集,我们可能会习惯于使用for循环一个个处理,但在机器学习中,是把每一个样本写成一个列向量x,然后把m个列向量拼成一个矩阵X.这个矩 ...
- deeplearning.ai 人工智能行业大师访谈 林元庆 听课笔记
1. 读博士之前,林元庆是学光学,他自认为数学基础非常好.在宾夕法尼亚大学上课认识了他的博士导师Dan Lee,转学机器学习.他从头开始学了很多算法,甚至PCA,之前他完全不知道这些,他觉得非常兴奋, ...
- Deeplearning.ai课程笔记-神经网络和深度学习
神经网络和深度学习这一块内容与机器学习课程里Week4+5内容差不多. 这篇笔记记录了Week4+5中没有的内容. 参考笔记:深度学习笔记 神经网络和深度学习 结构化数据:如数据库里的数据 非结构化数 ...
- 针对深度学习(神经网络)的AI框架调研
针对深度学习(神经网络)的AI框架调研 在我们的AI安全引擎中未来会使用深度学习(神经网络),后续将引入AI芯片,因此重点看了下业界AI芯片厂商和对应芯片的AI框架,包括Intel(MKL CPU). ...
- (转)神经网络和深度学习简史(第一部分):从感知机到BP算法
深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chen ...
- [DeeplearningAI笔记]神经网络与深度学习人工智能行业大师访谈
觉得有用的话,欢迎一起讨论相互学习~Follow Me 吴恩达采访Geoffrey Hinton NG:前几十年,你就已经发明了这么多神经网络和深度学习相关的概念,我其实很好奇,在这么多你发明的东西中 ...
- 【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验【中英】
[吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第一周测验[中英] 第一周测验 - 深度学习简介 和“AI是新电力”相类似的说法是什么? [ ]AI为我们的家庭和办公室的个人设备供电 ...
- Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1
3.Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1 http://blog.csdn.net/sunbow0 ...
随机推荐
- 数据分析与展示——Matplotlib基础绘图函数示例
Matplotlib库入门 Matplotlib基础绘图函数示例 pyplot基础图表函数概述 函数 说明 plt.plot(x,y,fmt, ...) 绘制一个坐标图 plt.boxplot(dat ...
- Sublime Text编辑器 + vim插件
Sublime安装 Sublime Text 是一个代码编辑器.Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim. Su ...
- iOS Button 上文字图片位置的设置
1. 添加图片+文字/文字+图片 ,不分前后,图片默认在文字前边 加空格隔开 UIButton * button =[[UIButton alloc] initWithFrame:CGRectMake ...
- coursera 视频总是缓冲或者无法观看的解决办法
注意!!!该方法针对Windows用户,亲测有效. 1.用管理员权限记事本打开host文件 2.将如下内容复制到文件末尾 52.84.246.90 d3c33hcgiwev3.cloudfront.n ...
- Java 硬件同步机制 Swap 指令模拟 + 记录型信号量模拟
学校实验存档//.. 以经典的生产者消费者问题作为背景. 进程同步方式接口: package method; /** * P表示通过,V表示释放 */ public interface Method ...
- [置顶]
MVC中使用signalR入门教程
一.前言:每次写总要说一点最近的感想 进入工作快半年了,昨天是最郁闷的一天,我怀疑我是不是得了"星期一综合征",每个星期一很没有状态.全身都有点酸痛,这个可能一个星期只有周末才打一 ...
- js计算字数
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- Selinux安全机制
1.Selinux安全机制简介 Selinux是Google在Android 4.4上正式推出的一套以SELinux为基础于核心的系统安全机制.而SELinux则是由美国NSA(国安局)和一些公司(R ...
- Mysql中字符集总结
有时候,在Mysql数据库中会经常遇到乱码的问题,现在普遍的做法就是全部强行把编码格式都设置成utf8模式,就可以解决这个问题,以前是知其然,不知其所以然,今天我就稍微研究了下Mysql的字符集. 就 ...
- ASP.NET Core读取AppSettings
http://www.tuicool.com/articles/rQruMzV 今天在把之前一个ASP.NET MVC5的Demo项目重写成ASP.NET Core,发现原先我们一直用的Configu ...