入门tenseflow系列—1
入门tenseflow
教程来源 :使用tensorflow搭建自己的神经网络——莫烦
首先,什么是神经网络
神经网络分成两类,第一类生物神经网络,第二类是人工神经网络。来源wiki的定义如下: 生物神经网络(Biological Neural Networks)一般指生物的大脑神经元,细胞,触点等组成的网络,用于产生生物的意识,帮助生物进行思考和行动。
人工神经网络:人工神经网络是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在工程与学术界也常直接简称为“神经网络”或类神经网络。 (以上来源wiki百科)
人工神经网络是是类似于生物神经网络的构造。使用机器运算模型来模仿生物进行决策计算。神经网络由大量的节点和之间的联系构成,类似于人脑神经的触点、细胞和神经元之间的联系。
下图就是一个典型的神经网络,分为三个步骤:输入、加工处理、输出。
输入层负责接收信息,比如我们实际进行ai相关项目当中需要的大量的数据就是整个系统的输入层。
加工处理层负责对输入的信息进行加工处理。就是我们常见的数据加工,特征工程,机器学习建模过程等。
输出信息也就是输出一个大家都能看得懂的结果
再插入一个两层的神经元
输出层和输入层是不能够算层数的
x1,x2,x3,x4是不同的输入变量,也就是我们常说的特征。y代表标签,也就是结果。在机器学习西瓜书里面举的例子,评价一个西瓜的好坏,瓜好吃或不好吃,甜与不甜是标签,类似于结论性的评价,瓜的色泽,声响,有没有藤蔓这些表象比较显性的称为特征。经过线性运算z=wx+b得到z,下标的1,2,3,4代表是第几个神经元,上标的1,2,3,4代表的是当前属于第几层。y^代表的是模型的输出。
ps:x1,x2,x3,x4不是代表四个样本,而是一个样本的四个特征(4个维度的值)。如果你有m个样本,意味着上图的过程需要重复m次。
前向传播:
前向传播就是从input经过一层层的layer,不断计算每一层的z和a,最后得到输出y^的过程,计算出了y^,就可以将它和真实值相比得到误差来计算损失(loss)。
反向传播:
反向传播就是根据损失函数 L(y^,y) 来反方向地计算每一层的z、a、w、b的偏导数(梯度),从而更新参数。
即将学习的TensorFlow只需要我们自己构建正向传播的过程,反向传播的过程是自动完成的。我们要做的就是构建一个这样的结构,然后把数据围喂进TensorFlow,TensorFlow翻译过来就是向量在里面飞。
TensorFlow Flying:
数据的流向从输入层经过隐藏层(加工处理)以后飞到输出层,输出y^,利用梯度下降进行处理,梯度下降会对几个参数进行更新和完善,更新以后的参数再次跑到隐藏层去学习,这样一直循环直到结果收敛。(自动调参厉害吧)