【第一周笔记】神经网络和深度学习
第一节 概论
一、什么是神经网络
由人脑的工作模式启发衍生的强力学习算法
例 1 – 单神经网络
给出有关房地产市场房屋大小的数据,拟合一个函数来预测其他房地产数据的价格。这是一个线性回归问题,因为作为大小函数的价格是连续输出。由于价格不可以为负数,因此我们建立了一个修正线性单元(ReLU),该函数从零开始。
基于单变量的房价预测输入是房子面积x,输出是房价y
“神经”构造了该ReLU函数。
The input is the size of the house (x) The output is the price (y) The “neuron” implements the function ReLU (blue line)
例 2 – 多神经网络
房价由多种情况影响,如大小、卧室数量、邮编、街区富裕情况......神经网络在预测的时候会产生隐藏单元,我们并不会指定每个隐藏单元代表什么意思,只需要给出相应的输入x和输出y就好了。
基于多变量的房价预测二、监督学习
1.监督学习基本分为两大问题:
输入和输出都是有参照的,根据参照,给定一个新的输入,预测新的输出。如房价:给定某地房子大小和房价的数据,根据这些数据,给定一个房子尺寸大小,预测该尺寸对应的房价。
分类:
- 线性回归类:预测连续输出值
- 分类问题:预测离散输出值
2.常用的神经网络
image : CNN
sequence data (audio,language...) RNN or complex RNNS
Structured data : 每个特征有清晰的定义
Unstructured data : Audio Image text
第二节 神经网络基础
一、logistic 回归
1.二分分类问题
二分分类问题的目标是训练出一个分类器以图片的特征向量x作为输入,预测输出的结果标签y是1还是0。
其中X 是每个特征向量集合成的大矩阵,
因此
2.Logistic Regression
给出 X ,想要预估的
参数 :
输出 :
其中sigmoid函数表示为:
在实际编程中会把w和b分开,b对应一个拦截器。
3.logistic regression cost function
所以在给定数据集,我们想要让对每个的预测值
if 想要损失函数小,我们需要大
if 想要损失函数小,我们需要小
loss function :基于单个训练样本
cost function:基于参数的总样本
cost function:
最终目的是使代价函数尽可能小
4.梯度下降
为了将J减小,我们必须找到合适的w和b。
梯度下降算法中,重复{
}
α被称作 学习率,决定了迭代步长
对m个样本梯度下降
算法:
For i = 1 to m
//如果多余2个特征值 w值延续到nx
//在这时 以此类推 其他的d值也都成为了J对该值的偏导数
该算法中会出现两次显性的for循环,这是非常低效的,为了解决这样的问题,使用向量化的方法。
二、向量化
GPU和CPU都有SIMD指令,即允许单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。GPU更擅长SIMD指令操作。
在实际编程中尽可能地避免显性for循环。
在python编程中善用np.dot()函数
e.g.将转变为
u = np.zeros((n,1))
for i in range(n):
u[i] = math.exp(v[i])
import numpy as np
u = np.exp(v)
np.log(v)
np.abs(v)
np.maximum(v,0)
v**2
1/v
对logistic regression算法进行向量化
定义一个大矩阵
算法:
= np.dot(w.T,X)+b
//反向更新w
//反向更新b
关于正向传播和反向传播的理解,参考https://www.cnblogs.com/charlotte77/p/5629865.html,该作者用数字化的演示详细地阐述了back propagation的重要意义。直观地将,逐步更新权值项w和截距项b的过程就是BP的主要过程。
第三节 浅层神经网络
一、神经网络
神经网络表示双层神经网络,一般不把输入层算入标准层,输入层也被称作第零层。隐藏层和最后的输出层是带有参数的,隐藏层带有两个相关的参数W和b。在本图中,是一个4×3的矩阵。4来源于四个隐藏层,3来自于三个输入层。是一个4×1的矩阵。是一个1×4的矩阵,因为隐藏层有四个隐藏单元,只有1个对应的输出,是一个1×1的矩阵。
二、激活函数
tanh函数的平均值接近0,因此有数据中心化的效果。在效果上比sigmoid函数要好。
另外,求导的结果是
在做二元分类的时候可以使用sigmoid函数,因为需要输出结果在0到1之间。
ReLU函数
带泄露的ReLU:
如果所有隐藏单元都使用线性激活函数的话,那么在逻辑上是没有意义的。
三、梯度下降
对于神经网络的梯度下降
神经网络的梯度下降
权重的随机初始化也非常重要,如果在一开始的时候全都赋值为0的话,很有可能会造成所有隐藏神经元都在进行同一个函数的计算,这样的话该神经网络会发生“对称”。
第四节 深层神经网络
一、前向传播
深层神经前向传播的过程大致如此,l从1一直迭代到最深层。在这一步可能需要一个显性的for循环。
总结起来的维度必须是,的维度是
二、参数和超参数
参数:
超参数:某种程度上决定了最终的W和b
- 学习率 α
- 梯度下降法的循环数量
- 隐藏层数L
- 隐藏单元数:。
- 激活函数
······