假设你想创建一个机器学习分类模型, 其分类结果有两种情况:正面评价、负面评价。
而构建任何一个机器学习模型都包括两步:
使用大量的已经分类好的数据进行训练
使用训练好的模型对未见过的新的数据进行分类
更具体的,我们来看图:
首先提供大量数据,例如 IMDB 网站对电影的评价,这些数据已经被标记好是正面或负面的。
数据进入训练阶段,该阶段会使用机器学习模型通过现有数据进行学习;
这个分类器通过你的机器学习模型来进行预测,根据预测结果与实际结果对比,对模型会有一个反馈,从而让你的模型进行学习,这个反馈通常是损失函数的形式。
这个反馈就是用来改进你模型的参数,以便能够更好的预测。
在这里,机器学习模型的数据叫做“特征”,而模型的输出通常叫做目标或标记。
这类机器学习的系统会自行确定需要注意哪些特征,神经网络就是这类系统的例子。
神经网络
神经网络是一种深度学习算法,可以说它是最常见的深度学习算法,有时候会用神经网络来代表深度学习词。
神经网络可以从输入数据进行学习到哪些特征比较重要。
神经网络模型里最基本的构建块就是神经元。
我们可以把神经元当作活跃的学习单元,它们就是能够从数据进行学习的构建块。
神经网络的结构是什么样的?
神经网络由很多层构成,每层都有很多神经元组成,也就是很多的活跃学习单元,每一层都能从数据学到些不同的东西。最后这些层组成的输出结果就是预测结果。
其中,输入层和输出层(第一层和最后一层)叫做可视层:
而在可视层之间的就是隐藏层,一个神经网络可以有任意多个隐藏层:
每一层都会对输入数据进行处理,每一层都由互联的神经元组成:
神经元(Neuron)
一个神经元就是一个简单的数学函数,这个函数把一系列 X 值作为它的输入, 它输出的是单个结果,也就是 Y 值。如下图:
然后这个神经元输出的 Y 值就会作为输入传递给神经网络下一层中的神经元:
对于处于活跃学习状态的神经元,一旦输入改变了,那么它的输出也会改变。
对于神经网络两个层中的两个神经元之间的连接,都关联了一个权重 W:
这个权重 W 就是两个神经元之间连接强度的指示器。
如果下一层的神经元对上一层神经元的结果很敏感,那么它们之间的连接就更强:
在神经网络计算图中,这些节点(Node)就是神经元(也就是简单的构建块):
而下图中的这些带箭头的边(Edge),就是神经元操作的数据:
神经元的数学函数对输入数据进行运算并产生输出数据,这些数据就叫做 Tensor(张量)。
而 TensorFlow 就是指 Tensor 在整个神经网络计算图里面流动。
我们经常把神经网络训练的过程叫做寻找模型的参数, 这些参数其实就是上图中这些边(Edge)的权重。一旦神经网络被训练完,这些边(Edge),也就是不同层神经元之间的连接,就都有了权重。这些权重就是模型的参数,这样的话模型就可以用来做预测了。
接下来,让我们仔细看一下单个神经元。
每个神经元只会对输入数据应用两个简单的函数:
第一个函数就是仿射变换(Affine Transformation)
第二个函数是激活函数(Activation Function)
仿射变化
其中,仿射变换自己只能学习输入和输出之间的线性关系:
仿射变换只是对各个输入的加权求和,还加上一个偏移量(b),也就是 Wx + b;而仿射变换的输出会被传入给激活函数。
激活函数
神经网络层中的每个神经元都可以配置不同的激活函数,激活函数负责发现神经元输入和输出之间的非线性关系。
最简单的激活函数就是恒等函数(Identity Function),也就是输入等于输出。而这时这个神经元就是一个线性的神经元,它只能从数据中学习线性关系。
而仿射变换和激活函数的组合就可以学习任意的关系了。
激活函数本质上不是线性的,它负责学习你数据中非线性的关系。常见的激活函数有以下几种:
而最常使用的激活函数应该就是 ReLU 函数:
ReLU 的全拼是:Rectified Linear Unit(修正线性单元)。
ReLu 函数非常简单:ReLU(x) = max(0, x),这里,如果 x < 0,那么输出就是 0;否则输出就是 x。
另外一个使用较多的,经常用于分类模型的激活函数就是 SoftMax:
SoftMax 函数的输出在 0 到 1 之间,而这个输出可被解释为概率, 结合这个概率使用一个阈值就可以让你判定输入是否属于某个类型。
SoftMax 的曲线是 S 型的,这个曲线也叫做 logit 曲线。
为神经网络模型选择激活函数是非常重要的一件事,它会严重影响神经网络的性能。
仔细看这些激活函数就会发现:
这些激活函数都有一个梯度(Gradient)或者叫活跃(Active)这样的一个区域,这使得它们对输入的变化非常敏感。
当神经元是一个活跃神经元时(也就是正在活跃的从输入数据进行学习时,或者说它不是死神经元 ),那么它就会操作在活跃区域。
为了训练和调整神经网络的权重,那么你的激活函数就应该操作在活跃区域而不是饱和区域(下图箭头指向的就是饱和区域):
在饱和区域,即使调整输入,但是输出也不会发生变化。
对于神经网络,所需要了解的基本知识大概就是这些:
就是这样,很多非常简单的神经元在各层组合到一起就可以做很多神奇的事情。
训练过程中就会确定单个神经元对输入的那些权重和偏移量。
「艾尔登法环」梅琳娜手办开订 立体手办▪
万代「艾尔登法环」白狼战鬼手办开订 立体手办▪
「夏目友人帐」猫咪老师粘土人开订 立体手办▪
「五等分的新娘∬」中野三玖·白无垢版手办开订 立体手办▪
「海贼王」乌索普Q版手办开订 立体手办▪
良笑社「初音未来」新手办开订 立体手办▪
「黑岩射手DAWN FALL」死亡主宰手办开订 立体手办▪
「盾之勇者成名录」菲洛手办登场 立体手办▪
「魔法少女小圆」美树沙耶香手办开订 立体手办▪
「咒术回战」七海建人粘土人登场 立体手办▪
「五等分的新娘」中野二乃白无垢手办开订 立体手办▪
「为美好的世界献上祝福!」芸芸粘土人开订 立体手办▪
「公主连结 与你重逢」六星可可萝手办开订 立体手办▪
「女神异闻录5」Joker雨宫莲手办开订 立体手办▪
「间谍过家家」约尔・福杰粘土人登场 立体手办▪
「街角魔族 2丁目」吉田优子手办开订 立体手办▪
「火影忍者 疾风传」旗木卡卡西·暗部版粘土人登场 立体手办▪
「佐佐木与宫野」宫野由美粘土人开订 立体手办▪
「盾之勇者成名录」第2季拉芙塔莉雅手办开订 立体手办▪
「咒术回战」两面宿傩Q版坐姿手办开订 立体手办▪
「DATE·A·BULLET」时崎狂三手办开订 立体手办▪
「狂赌之渊××」早乙女芽亚里粘土人开订 立体手办▪
「魔道祖师」魏无羨粘土人开订 立体手办▪
「新·奥特曼」奥特曼手办现已开订 立体手办▪