机器学习中的损失函数

在机器学习中需要根据问题来选择合适的损失函数,是回归还是分类,是一次训练一个样本,还是批训练。一般而言,在回归问题(预测值为连续变量)中一次训练一个样本的话,损失函数:

loss = tf.square(Y - Y_hat, name='loss')

如果是批训练的话,损失函数:

loss = tf.reduce_mean(tf.square(Y - Y_hat, name='loss'))

在逻辑回归(分类问题)中,损失函数一般采用交叉熵损失函数 

#2021.10.16 HIT ATCI LZH
#在机器学习中需要根据问题来选择合适的损失函数,本例程有四类损失函数
#申明一个损失函数需要将系数定义为变量,而将数据集定义为占位符,可以有一个常学习率和正则化常数’
#在下面代码中,设m为样本数量,n为特征数量,P为类别数量,在代码之前需要定义这些全局参数
import tensorflow as tf
m = 1000
n = 15
P = 2

#1、标准的线性回归的情况下,只有一个输入变量和一个输出变量
#为训练数据申明Tensorflow占位符
X = tf.placeholder(tf.float32, name='X')
Y = tf.placeholder(tf.float32, name='Y')
#创建Tensorflow的权重和偏置且初始值设为0
w = tf.Variable(0.0)
b = tf.Variable(0.0)
#定义用于预测的线性回归模型
Y_hat = X*w + b
#定义损失函数,如果一次只处理一个样本,则损失函数是某个数据点下的差值的平方值
loss = tf.square(Y - Y_hat, name='loss')

#如果是批量训练,则损失函数是
loss = tf.reduce_mean(tf.square(Y - Y_hat, name='loss'))
#多元线性回归的情况下,输入变量

#2、逻辑回归的适合,损失函数一般定义为交叉熵函数
entropy = tf.nn.softmax_cross_entropy_with_logits(Y_hat, Y)
loss = tf.reduce_mean(entropy)#取均值

#如果想要把L1正则化加到损失上,那么代码如下
lamda = tf.constant(0.8) #正则化参数
regularization_param = lamda*tf.reduce_mean(tf.abs(w1))
loss = loss + regularization_param

#对于L2正则化,代码如下:
lamda = tf.constant(0.8) #正则化参数
regularization_param = lamda*tf.nn.l2_loss(w1)
loss = loss + regularization_param

损失函数的选择对于模型的训练至关重要,为确保收敛,损失函数应为凸的。一个光滑的、可微分的凸损失函数可以提供更好的收敛性。随着学习的进行,损失函数的值应该下降,并最终变得稳定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nwsuaf_huasir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值