2021/7/16 学习散射网络第一步-神经网络入门

Posted ViviranZ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021/7/16 学习散射网络第一步-神经网络入门相关的知识,希望对你有一定的参考价值。

一个典型的神经网路-网络组成要素概述

首先来一个最basic也是最原始的网络结构,此处表示的是一个全连接网络。

红色框:input输入层,(卷积神经网络是三维的,包括正常图像的二维坐标和一个深度维度(目前理解为表示颜色,之后学习到再更新知识点)

绿色框:表示隐藏层,实际运算中计算的中间参数(不输出,是不是就是可解释人工智能focus的 、不知道有什么实际意义的“黑盒”?)(一般来说神经网路实际应用中有多层的隐藏层)

黄色线:表示输入层到隐藏层的线性函数,表示为H=W_1 X+b_1 

蓝色线:表示隐藏层到输出层的线性函数,表示为Y=W_2H+b_2

绿色框中绿色圈圈到ReLU的运算:激活层

因为线性函数是最简单的、也是实际应用中最适合通过增高层数增加复杂度的工具,但是实际应用中无论加入多少层线性函数,实际上都可以以一个线性函数表示,因此只用线性函数的网络层数也就失去了意义,因此我们在每一个隐藏层计算线性函数之后增加一个激活层(ReLU层)

常见的激活层函数有:

0-1阶梯函数:f(x)=\\begin{cases} 0 & \\text{ if } x\\leq0 \\\\ 1 & \\text{ if } x>0 \\end{cases}

sigmoid函数:S(x)=\\frac{1}{1+e^{-x}}

ReLU函数:f(x)={\\begin{cases} 0 & \\text{ if } x\\leq0 \\\\ x & \\text{ if } x>0 \\end{cases}}{}.

其中sigmoid因为计算复杂+当x的绝对值较大的时候会出现梯度消失现象,因此用的少,ReLU用的多

紫色框:输出层……

softmax:把输出的向量转化为概率(归一化/正规化):S_i=\\frac{e^{y_i}}{\\Sigma_j e^{y_j}}

交叉熵:这个单独讲。量化在训练过程中生成实际值与网络输出值的差距,也是训练网络过程中尽量减小的目标函数。具体公式为:loss=\\Sigma_j p_j log(S_j)

 总结:

一句话复习一下:神经网络的传播都是形如Y=WX+b的矩阵运算;为了给矩阵运算加入非线性,需要在隐藏层中加入激活层;输出层结果需要经过Softmax层处理为概率值,并通过交叉熵损失来量化当前网络的优劣。

算出交叉熵损失后,就要开始反向传播了。其实反向传播就是一个参数优化的过程,优化对象就是网络中的所有W和b(因为其他所有参数都是确定的)。

(见https://zhuanlan.zhihu.com/p/65472471

交叉熵的前世今生

1.香农熵:

信息论上需要量化一组数据里的信息量,直观来看有这样几个条件:

a.“信息量”:对于随机变量而言,其取值是不确定的。在做随机试验之前,我们只了解各取值的概率分布,而做完随机试验后,我们就确切地知道了取值,不确定性完全消失。这样,通过随机试验我们获得了信息,且该信息的数量恰好等于随机变量的熵。在这个意义上,我们可以把熵作为信息的量度。

b. 通常我们认为一个事件发生概率越低,当它最终发生的时候得到的信息量就越大。就像“1+1=2”是极大概率发生的,即使真的出现也是司空见惯,俗话来说就是“物以稀为贵”。

在这两个条件的基础上,香农(Shannon)给出了一种量化数据的信息量的公式,针对随机变量X,其包含的信息量可表示为:

H(X)=-\\Sigma_x P(x)log_2P(x)

满足:一个事件发生概率越大其香农熵越小。这个公式表示的量被叫做香农熵

Note:热力学、生物上常见的熵:表示系统的混乱程度,这个是有量纲的。香农熵表示系统的“未知程度”,公式形式和热力熵一样,但是香农熵是没量纲的。

2.KL-散度

从香农熵的基础上发展而来的KL-散度,用于刻画两种分布的差异;其表达式为:

\\begin{align*} D_{KL}(p||q)&=E(log p(x)-log q(x))\\\\ &=\\Sigma_x p(x)\\frac{log p(x)}{log q(x)} \\end{align*}

可以看出,KL-散度不是对称的,也就是说

D_{KL}(p||q) \\neq D_{KL}(q||p)

给一个实例:我们有一组关于得病和年龄的分布,我们想知道这个分布更符合均匀分布还是正态分布?我们用q(x)表示实际分布,p(x)表示我们假设的分布,计算其KL-散度,值更小的说明更符合。

3.交叉熵 

由KL-散度的公式我们可以推得:

\\begin{align*} D_{KL}(p||q)&=\\Sigma_x p(x)(log p(x)-log q(x)) \\\\&=\\Sigma_x p(x)log p(x)-\\Sigma_x p(x)log q(x) \\\\&=-\\Sigma_x p(x)log q(x)-H(X_p) \\end{align*}

我们的交叉熵(cross entropy)就表示为:

H(p,q)=-\\Sigma_x p(x)log q(x)

也就是说,我们有:KL-散度=香农熵-交叉熵。实际上,交叉熵和KL-散度可以视为等价。

Note:常用的最小二乘法也可以用于优化使得分布和我们的数据尽量相似,但是实际上最小二乘法应用过程中开始收敛特别慢,因此不常用。

网络参数的训练(反向传播+参数优化)

网络的运行有两种,一是训练网络-通过已知对应输出的输入调整网络内部的参数,二是使用网络-运用带着训练好参数的网络计算未知输出的输入用于实际应用(很多时候实际上人类知道并用于检测网络的优劣)。我们首先研究训练网络——正向传播得到loss值,再反向传播优化参数的过程重复进行。

实际上,神经网络中需要优化(也最方便优化的)是线性函数中的W_ib_i,应用的方法是梯度下降法,通俗来说就是尝试:参数增大点-交叉熵减小-再增大点-交叉熵增大-(证明走过了)回来点,所以熟悉的走到local最优的问题又来了= =

扯远了,这里我们先不考虑local和global的问题。

我们很自然想到梯度下降法……

关于变量的和、积、矩阵乘法、向量加法等的求导问题以及链式法则等不多加赘述……

正常来说,我们想到可以用W_i=W_i-\\epsilon dW, b_i=b_i-\\epsilon db,的公式,(上升最快的方向的反方向走提前预设好的\\epsilon步长(\\epsilon官方叫做学习率,此处熟悉不赘述),优化还有一个思路:

其一,需要引入正则化惩罚项。这是为了避免最后求出的W过于集中所设置的项,比如[1/3,1/3,1/3]和[1,0,0],这两个结果明显前一个结果更为分散,也是我们更想要的。设正则化惩罚项的系数值为reg,那么修正后的dW可以写为:dW=dW+reg*W

 

接下来去看看CNN希望能看懂= =

参考:

神经网络15分钟入门!足够通俗易懂了吧https://zhuanlan.zhihu.com/p/65472471

神经网络15分钟入门!——反向传播到底是怎么传播的?https://zhuanlan.zhihu.com/p/66534632

交叉熵损失函数原理详解https://www.jianshu.com/p/43318a3dc715?isappinstalled=0

以上是关于2021/7/16 学习散射网络第一步-神经网络入门的主要内容,如果未能解决你的问题,请参考以下文章

再不入坑就晚了,深度神经网络概念大整理,最简单的神经网络是什么样子?

非视距成像+卷积神经网络算法,想看哪就看哪

网络安全入坑指南(授课版)

Scrapy框架学习第一步,了解它的运作流程

深度学习原理与框架-神经网络-cifar10分类(代码)

海康威视监控远程网络配置怎么设定?