【TensorFlow】常用的损失函数及其TensorFlow实现

1 损失函数

定义:将随机事件或其有关随机变量的取值映射为非负实数以表示该随机事件的“风险”或“损失”的函数。
应用:作为学习准则与优化问题相联系,即通过最小化损失函数求解和评估模型。
分类:回归问题、分类问题

2 回归问题的损失函数

首先创建预测序列和目标序列作为张量
预测序列是(-1,1)的等差数列,目标值为0

sess = tf.Session()
x_vals = tf.linspace(-1.,1.,500)
target = tf.constant(0.)

2.1 L2正则损失函数

L=∑i=1n(targeti−f(xi))2(1)L=\sum_{i=1}^{n}(target_i-f(x_i))^2\tag{1}L=i=1n(targetif(xi))2(1)
L2正则损失函数又称欧拉损失函数,是预测值f(xi)f(x_i)f(xi)与目标值targetitarget_itargeti差值的平方和。
L2正则损失函数是非常有用的损失函数,因为它在目标值附近有更好的曲度。
机器学习算法利用这点收敛,并且离目标越近收敛越慢。

l2 = tf.square(target - vals)

2.2 L1正则损失函数

L=∑i=1n∣targeti−f(xi)∣(2)L=\sum_{i=1}^{n}|target_i-f(x_i)|\tag{2}L=i=1ntargetif(xi)(2)
L1正则损失函数又称绝对值损失函数,区别是L2是对差值求绝对值。
L1正则损失函数在目标值附近不平滑,不能很好地收敛。

l1 = tf.abs(target - vals)

2.3 Pseudo-Huber损失函数

Pseudo-Huber损失函数是Huber损失函数的连续、平滑估计。
它试图利用L1和L2正则削减极值处的陡峭,使得目标值附近连续。
这个函数在目标附近是凸的,并且对数据中的游离点较不敏感。
具有上述的两个损失函数的优点。需要一个额外的参数delta决定曲线的斜率。
它的表达式依赖参数δ\deltaδ。后面会图示δ1=0.25\delta_1=0.25δ1=0.25δ2=5\delta_2=5δ2=5的区别:

delta1 = tf.constant(0.25)
ph_y_vals1 = tf.multiply(tf.square(delta1), tf.sqrt(1. +tf.square(target - x_vals)/delta1) - 1.)
delta2 = tf.constant(5)
ph_y_vals2 = tf.multiply(tf.square(delta1), tf.sqrt(1. +tf.square(target - x_vals)/delta1) - 1.)

3 分类问题的损失函数

3.1 Hinge损失函数

Hinge损失函数主要用来评估SVM算法,但有时也用来评估神经网络算法。
在本例中是计算两个目标类(-1,1)之间的损失。
下面的代码中,使用目标值1,所以预测值离1越近,损失函数值越小:

hinge_y_vals = tf.maximum(0.,1.-tf.multiply(target,x_vals))
hinge_y_out = sess.run(hinge_y_vals)

3.2 两类交叉熵损失函数

两类交叉熵损失函数又叫逻辑损失函数
当预测两类目标0或者1时,希望度量预测值到真实分类值(0或者1)的距离,
这个距离经常是0到1之间的实数。为了度量这个距离,可以使用信息论中的交叉熵

ce_y_vals = -tf.multiply(target, tf.log(x_vals)-tf.multiply((1.-target),tf.log(1.-x_vals)))
ce_y_out = sess.run(ce_y_vals)

3.3 sigmoid交叉熵损失函数

sigmoid交叉熵损失函数与上一个损失函数非常类似,
不同的是,它先把x_vals值通过sigmoid函数转换,再计算交叉熵损失

sigmoid_y_vals = tf.nn.sigmoid_cross_entropy_with_logits(logits=x_vals,labels=targets)
sigmoid_y_out = sess.run(sigmoid_y_vals)

3.4 加权交叉熵损失函数

加权交叉熵损失函数是Sigmoid交叉熵损失函数的加权,对正目标加权。
下面的例子中将正目标加权权重设为0.5

weight = tf.constant(0.5)
ce_weighted_y_vals = tf.nn.weighted_cross_entropy_with_logits(x_vals, targets, weight)
ce_weighted_y_out = sess.run(ce_weighted_y_vals)

3.5 Softmax交叉熵损失函数

Softmax交叉熵损失函数只针对单个目标分类的计算损失。
通过softmax函数将输出结果转化成概率分布,然后计算真值概率分布的损失。

unscaled_logits = tf.constant([[1.,-3.,10.]])
target_dist = tf.constant([[0.1,0.02,0.88]])
softmax_xentropy = tf.nn.softmax_cross_entropy_with_logits(logits=unscaled_logits,labels=target_dist)
print(sess.run(softmax_xentropy))

3.6 稀疏Softmax交叉熵损失函数

稀疏Softmax交叉熵损失函数和上一个损失函数类似
它把目标分类为true的转化成index
而Softmax交叉熵损失函数将目标转成概率分布

unscaled_logits = tf.constant([[1.,-3.,10.]])
sparse_target_dist = tf.constant([2])
sparse_xentropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=unscaled_logits,labels=sparse_target_dist)
print(sess.run(sparse_xentropy))

4 matplotlib绘制损失函数

x_array = sess.run(x_vals)
plt.plot(x_array,l2_y_out,'b-',label='L2 Loss')
plt.plot(x_array,l1_y_out,'r--',label='L1 Loss')
plt.plot(x_array,ph_y_out1,'k-.',label='PH Loss(0.25)')
plt.plot(x_array,ph_y_out2,'g:',label='PH Loss(5.0)')
plt.ylim(-0.2,0.4)
plt.legend(loc='lower right', prop={'size':11})
plt.show()# 三、matplotlib绘制分类算法的损失函数
plt.plot(x_array,hinge_y_out,'b-',label='Hinge Loss')
plt.plot(x_array,ce_y_out,'r--',label='Cross Entropy Loss')
plt.plot(x_array,sigmoid_y_out,'k-',label='Cross Entropy Sigmoid Loss')
plt.plot(x_array,ce_weighted_y_out,'g:',label='Weighted Cross Entropy Loss(0.5)')
plt.ylim(-1.5,3)
plt.legend(loc='lower right',prop={'size':11})
plt.show()

4.1 回归算法的损失函数图像

在这里插入图片描述

4.2 分类算法的损失函数图像

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/481111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从经典文本分类模型TextCNN到深度模型DPCNN

如今深度学习已经成为NLP领域的标配技术,在图像中大为成功的卷积神经网络(CNN)也开始广泛渗透到文本分类、机器翻译、机器阅读等NLP任务中。但是,在ACL2017以前,word-level的文本分类模型(以单词为语义单位…

从特征分解到协方差矩阵:详细剖析和实现PCA算法

从特征分解到协方差矩阵:详细剖析和实现PCA算法本文先简要明了地介绍了特征向量和其与矩阵的关系,然后再以其为基础解释协方差矩阵和主成分分析法的基本概念,最后我们结合协方差矩阵和主成分分析法实现数据降维。本文不仅仅是从理论上阐述各种…

NLP中常用文本分类模型汇总

如今深度学习已经成为NLP领域的标配技术,在图像中大为成功的卷积神经网络(CNN)也开始广泛渗透到文本分类、机器翻译、机器阅读等NLP任务中。但是,在ACL2017以前,word-level的文本分类模型(以单词为语义单位…

【TensorFlow】随机训练和批训练的比较与实现

一、随机训练和批训练 随机训练:一次随机抽样训练数据和目标数据对完成训练。批训练:一次大批量训练取平均损失来进行梯度计算,批量训练大小可以一次上扩到整个数据集。批训练和随机训练的差异:优化器方法和收敛的不同批训练的难…

「小公式」平均数与级数

喵喵喵,小夕最近准备复习一下数学和基础算法,所以可能会推送或者附带推送点数学和基础算法的小文章。说不定哪天就用(考)到了呢( ̄∇ ̄)注意哦,与头条位的文章推送不同,「小公式」和「…

最新出炉-阿里 2020届算法工程师-自然语言处理(实习生)以及补充:快递最短路径

问题2感觉跟下面的分苹果类似; 问题 G: 分梨 题目描述 zzq非常喜欢吃梨,有一天他得到了ACMCLUB送给他的一筐梨子。由于他比较仗义,就打算把梨子分给好朋友们吃。现在他要把M个梨子放到N个盘子里面(我们允许有的盘子为空&#xff0…

如何匹配两段文本的语义?

喵喵喵,好久不见啦。首先很抱歉大家期待的调参手册(下)迟迟没有出稿,最近两个月连着赶了4个DDL,整个人都不好了。最近几天终于有时间赶一下未完成的稿子了。在赶DDL的时候夹着写了这篇文章,就先发布这一篇吧…

【TensorFlow】实现简单的鸢尾花分类器

代码实现及说明 # python 3.6 # TensorFlow实现简单的鸢尾花分类器 import matplotlib.pyplot as plt import tensorflow as tf import numpy as np from sklearn import datasetssess tf.Session()#导入数据 iris datasets.load_iris() # 是否是山鸢尾 0/1 binary_target …

偏差-方差全面解释

偏差(Bias)与方差(Variance) 目录: 为什么会有偏差和方差?偏差、方差、噪声是什么?泛化误差、偏差和方差的关系?用图形解释偏差和方差。偏差、方差窘境。偏差、方差与过拟合、欠拟合…

「小算法」回文数与数值合法性检验

喵喵喵,小夕最近准备复习一下数学和基础算法,尽量每篇推送下面会附带点数学和基础算法的小文章。说不定哪天就用(考)到了呢( ̄∇ ̄)注意哦,与头条位的文章推送不同,「小公式」和「小算…

【TensorFlow】实现、训练并评估简单的回归模型和分类模型

1 回归模型 回归算法模型用来预测连续数值型,其目标不是分类值而是数字。为了评估这些回归预测值是否与实际目标相符,我们需要度量两者间的距离,打印训练过程中的损失,最终评估模型损失。 这里使用的例子是从均值为1、标准差为0…

史上最通熟易懂的检索式聊天机器人讲解

喵喵喵,一不小心又匿了三个月,突然诈尸害不害怕( ̄∇ ̄) 小夕从7月份开始收到第一场面试邀请,到9月初基本结束了校招(面够了面够了T_T),深深的意识到今年的对话系统/chatbot方向是真的…

Python pandas数据分析中常用方法

官方教程 读取写入文件 官方IO 读取 写入 read_csv       to_csv read_excel      to_excel read_hdf       to_hdf read_sql       to_sql read_json      to_json read_msgpack (experimental)   to_msgpack (experimental) read_html    …

小哥哥,检索式chatbot了解一下?

喵喵喵,一不小心又匿了三个月,突然诈尸害不害怕( ̄∇ ̄) 小夕从7月份开始收到第一场面试邀请,到9月初基本结束了校招(面够了面够了T_T),深深的意识到今年的对话系统/chatbot方向是真的…

领域应用 | 中医临床术语系统

本文转载自公众号中医药知识组织与标准。什么是中医药术语系统?它是干什么用的呢?中医药术语系统是运用计算机与信息技术等工具,对中医药学各领域中的事物、现象、特性、关系和过程进行标记和概括,并为每个概念赋予指称形成概念体…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Image图片组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Image图片组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Image组件 Image 用来加载并显示图片的基础组件,它支持从内存、本…

梁家卿 | 百科知识图谱同步更新

本文转载自公众号知识工场。 本文整理自复旦大学知识工场梁家卿博士在IJCAI 2017 会议上的论文报告,题目为《How to Keep a Knowledge Base Synchronized with Its Encyclopedia Source》,作者包括:梁家卿博士(复旦大学&#xff0…

别再搜集面经啦!小夕教你斩下NLP算法岗offer!

推完上一篇文章,订阅号和知乎后台有好多小伙伴跟小夕要面经(还有个要买简历的是什么鬼),然鹅小夕真的没有整理面经呀,真的木有时间(。 ́︿ ̀。)。不过话说回来,面经有多大用呢&#…

肖仰华 | 基于知识图谱的问答系统

本文转载自公众号知识工场。 本文整理自复旦大学知识工场肖仰华教授在VLDB 2017 会议上的论文报告,题目为《KBQA: Learning Question Answering over QA Corpora and Knowledge Bases》,作者包括:崔万云博士(现上海财经大学讲师&a…