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 神经网络基础 听课笔记的更多相关文章

  1. deeplearning.ai 改善深层神经网络 week1 深度学习的实用层面 听课笔记

    1. 应用机器学习是高度依赖迭代尝试的,不要指望一蹴而就,必须不断调参数看结果,根据结果再继续调参数. 2. 数据集分成训练集(training set).验证集(validation/develop ...

  2. deeplearning.ai 神经网络和深度学习 week2 神经网络基础

    1. Logistic回归是用于二分分类的算法. 对于m个样本的训练集,我们可能会习惯于使用for循环一个个处理,但在机器学习中,是把每一个样本写成一个列向量x,然后把m个列向量拼成一个矩阵X.这个矩 ...

  3. deeplearning.ai 人工智能行业大师访谈 林元庆 听课笔记

    1. 读博士之前,林元庆是学光学,他自认为数学基础非常好.在宾夕法尼亚大学上课认识了他的博士导师Dan Lee,转学机器学习.他从头开始学了很多算法,甚至PCA,之前他完全不知道这些,他觉得非常兴奋, ...

  4. Deeplearning.ai课程笔记-神经网络和深度学习

    神经网络和深度学习这一块内容与机器学习课程里Week4+5内容差不多. 这篇笔记记录了Week4+5中没有的内容. 参考笔记:深度学习笔记 神经网络和深度学习 结构化数据:如数据库里的数据 非结构化数 ...

  5. 针对深度学习(神经网络)的AI框架调研

    针对深度学习(神经网络)的AI框架调研 在我们的AI安全引擎中未来会使用深度学习(神经网络),后续将引入AI芯片,因此重点看了下业界AI芯片厂商和对应芯片的AI框架,包括Intel(MKL CPU). ...

  6. (转)神经网络和深度学习简史(第一部分):从感知机到BP算法

    深度|神经网络和深度学习简史(第一部分):从感知机到BP算法 2016-01-23 机器之心 来自Andrey Kurenkov 作者:Andrey Kurenkov 机器之心编译出品 参与:chen ...

  7. [DeeplearningAI笔记]神经网络与深度学习人工智能行业大师访谈

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 吴恩达采访Geoffrey Hinton NG:前几十年,你就已经发明了这么多神经网络和深度学习相关的概念,我其实很好奇,在这么多你发明的东西中 ...

  8. 【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验【中英】

    [吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第一周测验[中英] 第一周测验 - 深度学习简介 和“AI是新电力”相类似的说法是什么? [  ]AI为我们的家庭和办公室的个人设备供电 ...

  9. Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1

    3.Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1 http://blog.csdn.net/sunbow0 ...

随机推荐

  1. java.lang基础数据类型boolean、char、byte、short、int、long、float、double (JDK1.8)

    java.lang.Boolean public static int hashCode(boolean value) { return value ? 1231 : 1237; } JDK 1.8新 ...

  2. bzoj 2752: [HAOI2012]高速公路(road)

    Description Y901高速公路是一条重要的交通纽带,政府部门建设初期的投入以及使用期间的养护费用都不低,因此政府在这条高速公路上设立了许多收费站.Y901高速公路是一条由N-1段路以及N个收 ...

  3. Python学习(五):易忘知识点

    1.列表比较函数cmp >>> a = [1,2,3,4] >>> b = [1,2,3,4,5] >>> c = [1,2,3,4] >& ...

  4. df 命令详解

    一.df  作用:  显示磁盘分区上的可使用的磁盘空间, 默认显示单位为kb . 可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间的等信息. 选项: -a :包含全部的文件系统 -h :以 ...

  5. 从源码(编译)安装golang 二

    h1 { margin-top: 0.6cm; margin-bottom: 0.58cm; direction: ltr; color: #000000; line-height: 200%; te ...

  6. golang社区

    a development list for Go Programming Language https://groups.google.com/forum/#!forum/golang-dev a ...

  7. javamelody 使用

    javamelody 扩展API如何获取监控参数 https://github.com/javamelody/javamelody/wiki/ExternalAPI#json

  8. 3D轮播切换特效 源码

    这个3D轮播切换特效是我2017年2月份写的 当初我 刚接触HTML不久,现在把源码分享给大家 源码的注释超级清楚 . <!-- 声明文档类型:html 作用:符合w3c统一标准规范 每个浏览器 ...

  9. ubuntu环境下python虚拟环境的安装

    一. 虚拟环境搭建 在开发中安装模块的方法: pip install 模块名称 之前我们安装模块都是直接在物理环境下安装,这种安装方法,后面一次安装的会覆盖掉前面一次安装的.那如果一台机器上面开发多个 ...

  10. MySQL视图,触发器,事务,存储过程,函数

    create triggr triafterinsertcmdlog after insert on cmd_log FOR EACH ROW trigger_body .#NEW : 代表新的记录 ...