哈尔滨 房产网站建设怎么找到网站后台
2026/3/27 16:10:55 网站建设 项目流程
哈尔滨 房产网站建设,怎么找到网站后台,快速仿站网站建设,手机小程序怎么制作输出层的设计 神经网络可以用在分类问题和回归问题上#xff0c;不过需要根据情况改变输出 层的激活函数。一般而言#xff0c;回归问题用恒等函数#xff0c;分类问题用softmax 函数。机器学习的问题大致可以分为分类问题和回归问题。分类问题是数 据属于哪一个类别的问题。…输出层的设计神经网络可以用在分类问题和回归问题上不过需要根据情况改变输出层的激活函数。一般而言回归问题用恒等函数分类问题用softmax 函数。机器学习的问题大致可以分为分类问题和回归问题。分类问题是数据属于哪一个类别的问题。比如区分图像中的人是男性还是女性的问题就是分类问题。而回归问题是根据某个输入预测一个连续的数值的问题。比如根据一个人的图像预测这个人的体重的问题就是回归问题类似“57.4kg”这样的预测。恒等函数和softmax函数恒等函数会将输入按原样输出对于输入的信息不加以任何改动地直接输出。因此在输出层使用恒等函数时输入信号会原封不动地被输出。另外将恒等函数的处理过程用之前的神经网络图来表示的话则如图3-21所示。和前面介绍的隐藏层的激活函数一样恒等函数进行的转换处理可以用一根箭头来表示。分类问题中使用的softmax 函数可以用下面的式3.10表示。ykexp⁡(ak)∑i1nexp⁡(ai)y_k \frac{\exp(a_k)}{\sum_{i1}^n \exp(a_i)}yk​∑i1n​exp(ai​)exp(ak​)​exp(x)exp(x)exp(x)是表示 $ e^x $ 的指数函数(e(e(e是纳皮尔常数 2.7182…)。式 (3.10) 表示假设输出层共有 $ n $ 个神经元计算第 $ k $ 个神经元的输出 $ y_k $。如式 (3.10) 所示softmax 函数的分子是输入信号 $ a_k $ 的指数函数分母是所有输入信号的指数函数的和。用图表示softmax 函数的话如图3-22 所示。图3-22 中softmax 函数的输出通过箭头与所有的输入信号相连。这是因为从式3.10可以看出输出层的各个神经元都受到所有输入信号的影响。现在我们来实现softmax 函数。在这个过程中我们将使用Python解释器逐一确认结果。anp.array([0.3,2.9,4.0])exp_anp.exp(a)# 指数函数print(exp_a)[1.3498588118.1741453754.59815003]sum_exp_anp.sum(exp_a)# 指数函数的和print(sum_exp_a)74.1221542102yexp_a/sum_exp_aprint(y)[0.018211270.245191810.73659691]这个Python实现是完全依照式3.10进行的所以不需要特别的解释。考虑到后面还要使用softmax 函数这里我们把它定义成如下的Python函数。defsoftmax(a):exp_anp.exp(a)sum_exp_anp.sum(exp_a)yexp_a/sum_exp_areturny实现softmax函数时的注意事项上面的softmax函数的实现虽然正确描述了式3.10但在计算机的运算上有一定的缺陷。这个缺陷就是溢出问题。softmax 函数的实现中要进行指数函数的运算但是此时指数函数的值很容易变得非常大。比如e10e^{10}e10的值会超过20000e100 会变成一个后面有40 多个0 的超大值e1000e^{1000}e1000的结果会返回一个表示无穷大的inf。如果在这些超大值之间进行除法运算结果会出现“不确定”的情况。计算机处理“数”时数值必须在4 字节或8 字节的有限数据宽度内。这意味着数存在有效位数也就是说可以表示的数值范围是有限的。因此会出现超大值无法表示的问题。这个问题称为溢出在进行计算机的运算时必须常常注意。softmax 函数的实现可以像式3.11这样进行改进。ykexp⁡(ak)∑i1nexp⁡(ai)y_k \frac{\exp(a_k)}{\sum_{i1}^n \exp(a_i)}yk​∑i1n​exp(ai​)exp(ak​)​Cexp⁡(ak)C∑i1nexp⁡(ai) \frac{C \exp(a_k)}{C \sum_{i1}^n \exp(a_i)}C∑i1n​exp(ai​)Cexp(ak​)​exp⁡(aklog⁡C)∑i1nexp⁡(ailog⁡C) \frac{\exp(a_k \log C)}{\sum_{i1}^n \exp(a_i \log C)}∑i1n​exp(ai​logC)exp(ak​logC)​exp⁡(akC′)∑i1nexp⁡(aiC′) \frac{\exp(a_k C)}{\sum_{i1}^n \exp(a_i C)}∑i1n​exp(ai​C′)exp(ak​C′)​首先式3.11在分子和分母上都乘上C这个任意的常数因为同时对分母和分子乘以相同的常数所以计算结果不变。然后把这个C移动到指数函数exp中记为logClog ClogC。最后把logClog ClogC替换为另一个符号C′C^{}C′。式3.11说明在进行softmax 的指数函数的运算时加上或者减去某个常数并不会改变运算的结果。这里的C′C^{}C′可以使用任何值但是为了防止溢出一般会使用输入信号中的最大值。我们来看一个具体的例子。anp.array([1010,1000,990])np.exp(a)/np.sum(np.exp(a))# softmax函数的运算array([nan,nan,nan])# 没有被正确计算cnp.max(a)# 1010a-c array([0,-10,-20])np.exp(a-c)/np.sum(np.exp(a-c))array([9.99954600e-01,4.53978686e-05,2.06106005e-09])如该例所示通过减去输入信号中的最大值上例中的c我们发现原本为nannot a number不确定的地方现在被正确计算了。综上我们可以像下面这样实现softmax 函数。defsoftmax(a):cnp.max(a)exp_anp.exp(a-c)# 溢出对策sum_exp_anp.sum(exp_a)yexp_a/sum_exp_areturnysoftmax函数的特征使用softmax()函数可以按如下方式计算神经网络的输出。anp.array([0.3,2.9,4.0])ysoftmax(a)print(y)[0.018211270.245191810.73659691]np.sum(y)1.0如上所示softmax函数的输出是0.0 到1.0之间的实数。并且softmax函数的输出值的总和是1。输出总和为1 是softmax 函数的一个重要性质。正因为有了这个性质我们才可以把softmax 函数的输出解释为“概率”。比如上面的例子可以解释成y[0]的概率是0.0181.8%y[1]的概率是0.24524.5%y[2]的概率是0.73773.7%。从概率的结果来看可以说“因为第2 个元素的概率最高所以答案是第2 个类别”。而且还可以回答“有74%的概率是第2 个类别有25%的概率是第1 个类别有1%的概率是第0 个类别”。也就是说通过使用softmax 函数我们可以用概率的统计的方法处理问题。这里需要注意的是即便使用了softmax 函数各个元素之间的大小关系也不会改变。这是因为指数函数yexp(x)y exp(x)yexp(x)是单调递增函数。实际上上例中a的各元素的大小关系和y的各元素的大小关系并没有改变。比如a的最大值是第2 个元素y的最大值也仍是第2 个元素。一般而言神经网络只把输出值最大的神经元所对应的类别作为识别结果。并且即便使用softmax 函数输出值最大的神经元的位置也不会变。因此神经网络在进行分类时输出层的softmax 函数可以省略。在实际的问题中由于指数函数的运算需要一定的计算机运算量因此输出层的softmax 函数一般会被省略。求解机器学习问题的步骤可以分为“学习”A 和“推理”两个阶段。首先在学习阶段进行模型的学习B然后在推理阶段用学到的模型对未知的数据进行推理分类。如前所述推理阶段一般会省略输出层的softmax 函数。在输出层使用softmax 函数是因为它和神经网络的学习有关系详细内容请参考下一章。输出层的神经元数量输出层的神经元数量需要根据待解决的问题来决定。对于分类问题输出层的神经元数量一般设定为类别的数量。比如对于某个输入图像预测是图中的数字0 到9 中的哪一个的问题10 类别分类问题可以像图3-23 这样将输出层的神经元设定为10 个。如图3-23 所示在这个例子中输出层的神经元从上往下依次对应数字0, 1, . . ., 9。此外图中输出层的神经元的值用不同的灰度表示。这个例子中神经元y2y_2y2​颜色最深输出的值最大。这表明这个神经网络预测的是y2y_2y2​对应的类别也就是“2”

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询