神经网络初探
cheny658 Lv3

今天,稍微学习了一下神经网络的相关知识,在此做一下笔记。水一下概念,大家笑一笑就好。

1.前言

工作中经常会使用到算法组的同学提供的模型,然而模型的内部结构又是如何呢?
经过一番请教,我们了解到模型本质上是一堆的神经网络在对输入做计算,那么具体是怎么个算法呢,我们接下来以一个分类问题为例(我目前也只了解分类问题QAQ)

2.正向传播

假如我们的输入的是一个二维的点坐标,我们希望得到它在哪个象限的“答案”。此时神经网络的输入是一个矩阵,由于只有一个输入,此时为1。然后将通过权重偏重的计算得到隐藏层神经元数量。计算过程为:

紧接着,将隐藏层的结果通过激活函数:

激活函数的主要功能是引入非线性因素,解决线性模型所不能解决的问题,让数据可分类,因为有些数据无法被简单的线性函数分类常见的激活函数有sigmoid,binary step等。
经过一系列的处理,我们最终得到了神经网络的结果(由于二维空间的象限只有4个,所以第2维等于4)

3.Softmax处理结果

若最终结果以概率的形式呈现,这样我们就可以更直观的感受哪个象限的可能性最大,所以我们将结果通过Softmax处理:

这里提一个小知识,工程中往往不能接受过大的情况,因为会导致指数爆炸而难以实现,至少在C++中我们不希望有这种情况发生。解决办法十分简单,如下:

这样就能防止幂的结果过大导致难以工程化,虽然可能会丢失一点精度。

4.交叉熵和反向传播

交叉熵损失(Cross Entropy Error)主要是用来评估计算结果的准确性,计算方法如下:

本例中若代表第象限,则 。交叉熵的结果越接近0,则计算结果越准确,其实也很好理解,越大证明我们越愿意相信这个结果,同时越接近0( ),若我们的结果正确或者接近正确,则作为系数的将尽可能大,而又是确定的,故L的值会尽可能小。(不会只有我一个人理解这东西不是一眼吧,淦!)
反向传播还看不太懂,下次写😅

5.总结

简而言之就是到一堆隐藏层以及每层隐藏层配套的激活函数,得到结果后算得到分类结果的概率。后续还要利用交叉熵来评估当前神经元参数的优劣,并利用反向传播优化参数,然而我都还不会,下次再来水。