PART 1 神经网络和深度学习

本笔记更像是一个大纲整理,着重建立知识框架,对于细节知识尤其是已熟知的点做简略或忽略处理

第一章 简介 [2019-10-04]

1.1 什么是神经网络

1.1.1 神经元

一个节点,该节点接收一些输入的数值,并进行计算(通常是加权求和+非线性变换),并把计算结果传递出来。

1.1.2 神经网络

一些神经元连接在一起,便构成神经网络。根据连接方式的不同(或者说数据流动方式的不同),可基本分为三大类:普通前馈神经网络(NN)、循环神经网络(RNN)、卷积神经网络(CNN)

1.2 神经网络与监督学习

前向传播(FP):神经网络接收一个输入(通常是一个向量或二维张量),经过若干个神经元层的计算与传递,最终输出。

反向传播(BP):前向传播的输出,与真实的y值的差异构成了损失函数。根据该误差,往回逐层调整神经网络的参数。其本质是链式求导。

FP+BP是神经网络训练的基本形式,属于典型的监督学习

1.3 深度学习兴起的原因

1)数据量的增大:数据量越大,模型效果越好,但对大部分传统ML算法(SVM等)而言,该趋势有上限,即当数据量大到一定程度后,训练效果将不再随着增大数据量而有明显提升。而神经网络则不然,由于神经网络结构可以非常复杂,其需要的数据量更大,且可以一直随着数据量增大而提升效果。

2)神经网络算法本身的演进:如ReLU激活函数的出现,其相比于sigmoid而言更快的收敛速度使得训练速度更快,从而更实际可用。

3)硬件的提升:主要包括算力和网络传输速度的提升等。

第二章 二分类简介

2.0 本章概述

以二分类问题和逻辑回归算法为例,介绍机器学习的基本流程和涉及的基本该念,主要包括:二分类问题、逻辑回归算法、损失函数、梯度下降等。

2.1 二分类问题简介 略

2.2 逻辑回归算法简介 略

2.3 逻辑回归的损失函数

使用交叉熵损失函数。

关于定义的区别:损失函数(loss function)指的是单个样本的损失。而代价函数或成本函数(cost function)一般指整个数据集的平均损失。

2.4 梯度下降法

基本原理和表达形式:略

基本特点:若代价函数为凸函数,则可寻得全局最优解,否则只能寻得局部最优解。

2.5 导数 略

2.6 更多导数的例子 略

对于大部分常见的函数形式,其导函数均可通过极限方法进行求解。

2.7 计算图

用计算图表达神经网络的FP和BP过程。

2.8 计算图的导数计算

同上,略

2.9 逻辑回归中的梯度下降法

可总结为以下步骤:

1)确定算法:逻辑回归

2)确定使用的损失函数:交叉熵

3)基于以上两步,损失函数就有了具体的形式。

4)梯度下降:针对每个特定样本,都可以求其损失对算法参数的导数。

2.10 整个数据集的梯度下降 略

2.11 向量化

含义:把整个过程包括前向传播、梯度求解、参数迭代等都用矩阵运算的方式去表达(或执行),而不是用for循环的方式。

实现:基于第三方库,如numpy等,其底层实现会充分利用CPU或GPU的并行化机制。(如何实现则不需要太关注)

2.12 更多向量化例子

2.13 逻辑回归的向量化表示

简单来说,一个样本就是一个vector,很多样本就是一个matrix,因为计算的形式可以表达为矩阵运算,而不是用for循环一个一个求,这就是向量化表示(基于numpy)

2.14 逻辑回归梯度下降的向量化表示

不止前向传播时可以向量化表示,反向传播时(求微分、求梯度)均可以用向量化表示。不再赘述。

(2019-10-08)

2.15 Python中的广播

广播是可以描述为:

① 一个(m, n)的矩阵,加减乘除一个数字,相当于把矩阵的每个元素都加减乘除这个数,或者说:是先把这个数字扩充成一个(m, n)的矩阵,然后再做一个pointwise的计算;

② 一个(m, n)的矩阵,加减乘除一个(m, 1)的向量,相当于把矩阵的每一行都加减乘除这个向量对应位置的元素,或者说,先把这个向量扩充成一个(m, n)的矩阵,然后做pointwise的计算;

② 一个(m, n)的矩阵,加减乘除一个(1 n)的向量,相当于把矩阵的每一列都加减乘除这个向量对应位置的元素,或者说,先把这个向量扩充成一个(m, n)的矩阵,然后做pointwise的计算;

以上所说的“扩充成一个矩阵”,就是“广播”的含义,“广播”在numpy里是默认实现的。

2.16 关于python/numpy的说明

略。numpy是数据分析/建模最常用的几个工具之一,应该进行系统学习。

2.17 jupyter/Ipython的基本使用

2.18 逻辑回归的损失函数的解释

逻辑回归:\hat{y}  = \sigma(W^{T}x+b),其中y帽代表的是预测为1的概率

其中:\sigma(z) = \frac{1}{1+e^{-z}}

交叉熵损失函数:y·log(\hat{y})+(1-y)log(1-\hat{y})

(本篇后续专门整理一篇博客,待完成)

第三章 神经网络基础

3.1 神经网络概览

描述与符号,略...

3.2 神经网络表示

1. input layer、hidden layer、output layer。

2. 具体的符号表示:a^{[1]}_{3}表示第一个隐藏层的第三个神经元~

3. 一般来说,隐藏层数+输出层数(1)等于通常说的神经网络层数。

3.3 计算神经网络的输出

输入 -> (加权求和 -> 激活)  ->  (加权求和 -> 激活) -> ... -> (加权求和 -> 激活) -> 输出

一个神经元内部有两步操作:加权求和、激活(非线性变换)

3.4 多样本的向量化

前向传播的矩阵运算形式表示,略

3.5 向量化实现的解释

W^{T}X

W的每一行代表下一层的每个神经元对应的输入权重

X的每一列代表一个样本

3.6 激活函数()

1. sigmoid激活函数: \sigma(z) = \frac{1}{1+e^{-z}} 最经典的激活函数,但已经基本上不用了。

2. 双正切激活函数:tanh(z) =\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}

3. ReLU激活函数:a = max(0, z)

4. leaky ReLU:a = max(0.01z, z)

经验法则:如果下一层是0-1二分类,则使用sigmoid,如果不是,则使用ReLU

3.7 为什么需要非线性激活

多个线性变化,本质山就是一个线性变换。

注意:ReLU并不是线性变换

3.8 激活函数的导数

1. sigmoid激活函数的导数:d\sigma(z)=\sigma(z)(1-\sigma(z))dz

2. tanh激活函数的导数:略

3. ReLU激活函数的导数:略

3.9 神经网络的梯度下降法

以一个只含有一个隐藏层的神经网络为例:

其包含的参数:W^{[1]},b^{[1]},W^{[2]},b^{[2]}

其中的损失函数:J(W^{[1]},b^{[1]},W^{[2]},b^{[2]}) = \frac{1}{m}\sum_{i=1}^{m}L(\hat{y},y)

前向传播过程:

反向传播过程:(梯度下降过程)

3.10 直观理解反向传播过程

本质就是链式求导。

可以直接看深度学习蓝皮书的反向传播四大公式。

3.11 网络参数的随机初始化

1. 不可全部初始化为零,因为参数全为0时,梯度下降法失效。

2. 随机初始化:

1) 对于sigmoid或tanh激活函数,w不宜初始化的过大,因为此时容易导致实际值落入梯度饱和区。对于ReLU类的激活函数则没有这类问题。

第四章 深层神经网络(DNN)

2019-10-11

4.1 深层神经网络

只针对简单的全连接神经网络而言,隐藏层较少就是浅层神经网络,隐藏层较多就是深层神经网络,多和少是个相对概念。

4.2 深层神经网络中的前向传播

加权求和 -> 激活函数 -> 加权求和 -> 激活函数 ... 还是这一套东西,略。

4.3 核对矩阵的维数

4.4 为什么使用深层神经网络

解释一:前面的层提取初级特征,后面的层在此基础上提取高级特征。以图像(人脸)识别为例:前面的层是提取折线、弯曲等初级特征,而后面的层在此基础上提取眼睛、鼻子等特征。

解释二:使用多个隐藏层,但每个隐藏层神经元数较少,即可拟合较复杂的函数。同等复杂的函数若用单隐藏层的神经网络进行拟合,隐藏层所需要的神经元数是巨大的,指数级(不懂)。

4.5 搭建深层神经网络块

本节实际讲了DNN中的前向传播和反向传播。再做如下阐述:

1)从数学角度看:前向传播就是加权求和+激活函数,循环往复。反向传播就是链式求导。

2) 从计算过程的优化角度看:前向传播并不是只算出输出,而是把中间层的输出也都缓存下来,反向传播时对各层的参数求偏导,也不是每层都从头开始求,而是缓存一些中间值,避免重复计算。(参考反向传播四大公式)

4.6 前向传播和反向传播

略…

4.7 参数 VS 超参数

对于DNN而言,参数就是W和b,通过学习而来。超参数可以分为两部分:一是结构参数,如网络层数,每层神经元数,每层用的激活函数等,二是训练参数:如学习率、迭代次数等。超参都是人为设定的。

4.8 神经网络和大脑的关系

算法所说的神经元与生物神经元类比,输入相当于树突,输出相当于轴突,核相当于激活函数。是个很粗糙的类比,其实没什么关系。

附录一 吴恩达采访Geoffrey Hinton

神仙聊天,什么都听不懂。捕捉到以下两点:

1. 被采访者是反向传播算法发明者

2. ReLU激活函数的本质是一叠sigmoid函数,唯一听说过的两个词语(但不懂这句话)

附录二 吴恩达采访Pieter Abbeel

附录三 吴恩达采访Ian Goodfellow

对抗神经网络的发明者

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容