最近刚刚开始学神经网络这块,也还是有很多看不懂的地方,只能先说说看得懂的地方了。主要还是记录代码这块内容。另外这篇文章第一次使用markdown写的,排版有点乱,请见谅哈哈。
1.神经网络
1.1神经网络的原理
神经网络可以说是人工智能最重要的分支了,其原理就如同其名字一样,模仿的是人脑传递和处理信息的过程。其结构由多个神经元组成不同的神经层,而多个神经层构成神经网络,神经元的结构如下图:
其中x为输入信号,w为每个信号的权重,b为偏差,activationfuction为激活函数,整个神经元用数学公式表示则为:
f(x)即为激活函数。而由多个神经元便构成了神经层与神经网络:
整个神经网络的工作流程就是输入一系列信号,这些信号通过神经网络进行处理,最后得到我们的输出值。
1.2激活函数
激活函数的作用便是模拟人脑神经元的激活,即前一个神经元得到信息后将信息传递给部分其所连接的神经元,而这些神经元就被激活了,其它没有得到信息的神经元则为未激活状态。激活函数另一个重要的特征则为非线性,这是为了使神经网络能够实现非线性模型,从而使得模型的应用范围与效率大大提高。如果没有激活函数,那么无论拥有多少层网络,得到的模型依旧是线性的,比如在分类问题中,得到的便是线性分类器,它对于非线性分类的效果就不尽人意了,如下图::
对于左图幅图,我们可以使用线性分类器做出很好的分类,但是对于右图,线性分类器就做不到了,这也是为什么要引入激活函数的原因。除此之外,激活函数还有一个重要的特征为处处可微,其原因在于之后要提到的优化方法。激活函数有很多种,包括sigmoid,relu,tanh,softplus,等,这里只介绍一下即将要用到的relu。
Relu全名为Rectified Linear Unit,其函数形式如下:
1.3优化方法
神经网络要如何运用到人工智能中去呢,这便是优化或者训练的作用了。给定输入数据和相应期望输出,通过优化方法来调整网络中各项权值使得输出结果接近期望值,最终形成我们的模型来预测未知的值。嗯,这里又涉及到了复杂的数学原理和数学公式,有点绝望,暂时看不懂推导,只能大概