最近正在学习吴孟达老师的深度学习,这一篇文章用来记录一下神经网络的相关知识点~
包括神经网络的理解和神经网络是如何工作的。
理解神经网络
用以下的图片理解神经网络:
图中第一层是输入层,其中的x1,x2,x3是输入样本的特征,比如音乐数据样本的音乐名、演唱者名等等。
第二层是隐藏层,神经网络的关键,隐藏层一般有很多层,即深层神经网络,图中只画了一层的神隐藏层
之所以采用深层神经网络是因为神经网络通常会被用于处理图像或音视频这类较为复杂的数据,针对这些数据,需要用多层的神经网络来学习。一般前几层学习一些局部的特征信息,后几层将局部信息整合来探索更加复杂的信息。这也是神经网络流行的原因之一。
以图中的一层隐藏层为例,图中的5,6,7,8均是同一层的单独神经元。神经元简单理解就是函数,给定相应的输入,通过神经元计算出相应的输出。一般神经元包括两个部分,一个线性函数和一个激活函数,如下图所示:
以一个神经元为例,w,b是神经元的参数(即训练过程中需要通过学习,不断调整的参数)。
神经元左边是对输入X=[x1,x2,x3]进行线性运算,得到向量z1。其中w是一个向量,对样本的不同特征进行加权,最后再加上偏置b,就完成了线性运算。
神经元右边是激活函数,图中展示的是δ(z),即sigmod激活函数,sigmod函数为:,sigmod函数将输出范围固定在(0,1)之间,适合做二分类问题。常用的激活函数还包括了tanh、ReLU、leaky RelU。关于激活函数我会在另一个文章中详细解释一下。在这里我们需要知道的是激活函数是非线性函数,发挥隐藏层的作用,避免神经网络的输出是对输入的线性组合。
值得注意的是,每个神经元都有不同的参数,要使神经网络发挥作用,神经元参数的初始化需要随机初始化。不同层的激活函数可以不同。
第三层就是输出层,只有一个神经元,神经元的计算类似于上面讲的单个神经元的计算。
神经网络如何工作:
以逻辑回归(用于解决二元分类问题)为例:
1、给定输入样本为x,初始化参数w,b。利用,
计算
,得到样本x的预测结果。
2、根据成本函数计算样本的预测结果和真实结果之间的误差。
单个样本的误差:
表示样本的真实值,
表示样本的预测值。二元分类问题中,真实值和预测值都只有0和1两种可能。
成本函数:
将所有样本的误差值相加再除以样本个数。
3、根据误差调整参数w,b,采用梯度下降法调整参数w 和b,找到使得样本的误差尽可能小的参数w和b。