1. 第i层网络 Z[i] = W[i]A[i-1] + B[i],A[i] = f[i](Z[i])。

其中, W[i]形状是n[i]*n[i-1],n[i]是第i层神经元的数量;

A[i-1]是第i-1层的神经元,形状是n[i-1]*p,p是样本数量;

B[i]形状是n[i]*p,B[i]的每一列都是一样的,所以其实有效的参数只是n[i]个,python里直接用n[i]*1的b[i]然后boradcasting成n[i]*p方便做加法。

A[0]对应输入层,n[0]是单个输入样本的特征数量。f[i]()是第i层的激活函数。

Notation:a4[2](12)表示第2层,第12个样本,第4个神经元。

2. 永远不要用sigmoid函数, 唯一的例外是二元分类问题的输出层,因为这需要输出是0或1。

tanh(z) = (e^z-e^(-z))/(e^z+e^(-z)) 作为激活函数几乎总比sigmoid函数效果好,直观地说是因为tanh的中心店是0而不像sigmoid是0.5,于是对于下一层有中心化数据的作用。

tanh和sigmoid函数的共同缺点是当输入很大或者很小时,函数会饱和,梯度为0。

ReLU是现在的默认选择,f(z) = max(0, z)。ReLU的收敛速度比tanh和sigmoid都要快得多。Leaky ReLU ( max(0.01z, z) )的表现更好一点,但是不明显,所以还是ReLU用的更多。

3. 为什么激活函数是必须的?如果没有激活函数,系统就成了只对输入做线性运算,内部的隐含层一点用也没有,网络层数再多也没用,因为线性函数的组合也是线性函数。

4. sigmoid σ(z) = 1/(1+e^(-z)),σ'(z) = σ(z)(1-σ(z)).

tanh g(z) = (e^z-e^(-z))/(e^z+e^(-z)) ,g'(z) = 1-(g(z))^2.

ReLU g(z) = max(0, z),g'(z) = {  0 ,   if z<0;

{  1,    if z>0;

{ undefined, if z = 0.   实际使用中可以把这个点的导数设为0或者1,都无所谓。

5. 训练神经网络时,随机初始化权重W非常重要,全部设为0的话会使得梯度下降法无效,b可以初始化为0。

w[i] = np.random.randn((n[i],n[i-1]))*0.01.    乘以0.01是为了把它初始化成很小的随机数,因为对于tanh、sigmoid类似的函数,权重太大容易饱和。如果不用tanh、sigmoid,用ReLU,那么问题不大,但如果最终是个二分类问题,最后一个输出还是用了sigmoid,那么还会遇到这个问题。所以干脆全部初始化成很小的随机数吧。对于浅层神经网络,一般这种初始化方法就ok了。但对于很深的神经网络,有时候要挑选0.01以外的常数。

b[i] = np.zero((n[i], 1))。

 但对于Logistic回归来说,并没有隐含层,所以是可以把W和b都初始化为0的。这样初始化的时候,第一次前向计算的输出确实是0,但是反向传播计算的梯度值是和输入相关的,所以不同的神经元会有不同的值,破坏了对称性,所以算法有效。

6. 神经网络算法的一般流程:

  1)定义神经网络的结构:输入的大小,隐藏层层数,每层神经元的数量,等等。

  2)初始化参数,W初始化为小随机数,b初始化为0。

  3)循环:

    a)前向传播,对于第[i]层网络,已知前一层传进来的输入A[i-1],和这一层的参数W[i]、b[i],以及激活函数,计算出Z[i]和A[i],并且把Z[i]、A[i]、W[i]保存起来为反向传播的计算做准备。

    b)计算loss。

    c)反向传播得到梯度,对于第[i]层网络,已知后一层传来的输入dA[i],从cache中取出Z[i]、A[i]、W[i],计算出dW[i]、db[i]、dA[i-1]

    d)更新参数。

deeplearning.ai 神经网络和深度学习 week3 浅层神经网络的更多相关文章

  1. deeplearning.ai 神经网络和深度学习 week3 浅层神经网络 听课笔记

    1. 第i层网络 Z[i] = W[i]A[i-1] + B[i],A[i] = f[i](Z[i]). 其中, W[i]形状是n[i]*n[i-1],n[i]是第i层神经元的数量: A[i-1]是第 ...

  2. DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络

    介绍 DeepLearning课程总共五大章节,该系列笔记将按照课程安排进行记录. 另外第一章的前两周的课程在之前的Andrew Ng机器学习课程笔记(博客园)&Andrew Ng机器学习课程 ...

  3. [DeeplearningAI笔记]神经网络与深度学习2.11_2.16神经网络基础(向量化)

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.11向量化 向量化是消除代码中显示for循环语句的艺术,在训练大数据集时,深度学习算法才变得高效,所以代码运行的非常快十分重要.所以在深度学 ...

  4. Andrew Ng - 深度学习工程师 - Part 1. 神经网络和深度学习(Week 2. 神经网络基础)

     =================第2周 神经网络基础=============== ===2.1  二分分类=== ===2.2  logistic 回归=== It turns out, whe ...

  5. [DeeplearningAI笔记]神经网络与深度学习2.1-2.4神经网络基础

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.1 二分分类 在二分分类问题中,目标是训练出一个分类器,它以图片的特征向量x作为输入,预测输出的结果标签y是1还是0.在图像识别猫图片的例子 ...

  6. 对比《动手学深度学习》 PDF代码+《神经网络与深度学习 》PDF

    随着AlphaGo与李世石大战的落幕,人工智能成为话题焦点.AlphaGo背后的工作原理"深度学习"也跳入大众的视野.什么是深度学习,什么是神经网络,为何一段程序在精密的围棋大赛中 ...

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

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

  8. Deep Learning.ai学习笔记_第一门课_神经网络和深度学习

    目录 前言 第一周(深度学习引言) 第二周(神经网络的编程基础) 第三周(浅层神经网络) 第四周(深层神经网络) 前言 目标: 掌握神经网络的基本概念, 学习如何建立神经网络(包含一个深度神经网络), ...

  9. TensorFlow 2.0 深度学习实战 —— 浅谈卷积神经网络 CNN

    前言 上一章为大家介绍过深度学习的基础和多层感知机 MLP 的应用,本章开始将深入讲解卷积神经网络的实用场景.卷积神经网络 CNN(Convolutional Neural Networks,Conv ...

随机推荐

  1. github 新建库,提交命令

    Command line instructions You can also upload existing files from your computer using the instructio ...

  2. 和我一起从0学算法(C语言版)(一)

    第一章 排序 第一节 简化版桶排法 友情提示:此文章分享给所有小白,大牛请绕路! 生活中很多地方需要使用排序,价格的由低到高.距离的由远及近等,都是排序问题的体现.如果排序量较少,依靠个人能力很容易实 ...

  3. Jmeter接口测试之案例实战

    Jmeter是apacheg公司基于Java开发的一款开源的压力测试工具,安装Jmeter之前先安装Jdk,具体JDK安装和环境变量配置自行百度.这里不概述. 1.添加线程组 测试计划->添加- ...

  4. VC调用VB写的COM

    VB. 步骤: 1.创建类库:类库的创建必须分为接口和实现类:给外面提供的是COM接口: 创建了接口和类之后还要创建"Guid",这个在"工具->创建GUID&qu ...

  5. 1 PHP 5.3中的新特性

    1 PHP 5.3中的新特性 1.1 支持命名空间 (Namespace) 毫无疑问,命名空间是PHP5.3所带来的最重要的新特性. 在PHP5.3中,则只需要指定不同的命名空间即可,命名空间的分隔符 ...

  6. 一文详解 Java 的八大基本类型

    自从Java发布以来,基本数据类型就是Java语言中重要的一部分,本文就来详细介绍下每种基本类型的具体使用方法和限制. 作者 | Jeremy Grifski 译者 | 弯月,责编 | 郭芮 出品 | ...

  7. 洛谷 P2622 关灯问题II【状压DP】

    传送门:https://www.luogu.org/problemnew/show/P2622 题面: 题目描述 现有n盏灯,以及m个按钮.每个按钮可以同时控制这n盏灯--按下了第i个按钮,对于所有的 ...

  8. js实现新闻滚动-单行滚动或者多行滚动

    注明:都是转载. 先说单行滚动: --------直接复制以下代码即可试验 转载http://www.3lian.com/edu/2011/06-30/4986.html----------- < ...

  9. DevComponents.DotNetBar2.dll设置样式的使用

    有点模仿QQ消息盒子的感觉,代码如下: using System; using System.Collections.Generic; using System.ComponentModel; usi ...

  10. 翻译——1_Project Overview, Data Wrangling and Exploratory Analysis-checkpoint

    为提高提高大学能源效率进行建筑能源需求预测 本文翻译哈佛大学的能源分析和预测报告,这是原文 暂无数据源,个人认为学习分析方法就足够 内容: 项目概述 了解数据 探索性分析 使用不同的机器学习方法进行预 ...