【第一周笔记】神经网络和深度学习

第一节 概论

一、什么是神经网络

由人脑的工作模式启发衍生的强力学习算法

例 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函数表示为:

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
  • 隐藏单元数:。
  • 激活函数

······

你可能感兴趣的:(【第一周笔记】神经网络和深度学习)