https://www.bilibili.com/video/av22530538/?p=16
#lesson16 损失函数
lesson16 损失函数
#1943年McCulloch Pittls神经元模型
#x(n)-------->f ---->F(x(n)w(n)+b)
# 激活函数 偏置项bias
#激活函数activation function
#rule sigmold tanh
#tf.nn,rule() tf.nn,sigmold() tf.nn,tanh
#NN复杂度:多用NN层数和NN参数的个数表示
#层数=隐藏层的层数+1个输出层
#总参数 = 总w+总b
#3*4+4 + 4*2 +2 =26
# 第一层 第2层
#损失函数loss、学习率learning_rate,滑动平均ema、正则化regularization
#损失函数(loss):预测值(y)与已知答案(y_)的差距
#NN优化目标:loss最小=》1、mse(Mean Squared Error)2\自定义 3、ce(Cross Entropy)
#均方误差mse:MSE(y_,y) = (y-y_)^2求和/n
#loss_mse = tf.reduce_mean(tf.square(y_-y))
#预测酸奶日销量y。x1,x2是影响日销量的因素。
#建模前,应预先采集的数据有:每日x1,x2和销量y_(即已知答案,最佳情况:产量=销量)
#捏造数据集X,Y_:y_=x1+x2 噪声:-0.05~+0.05 拟合可以预测销量的函数
自定义损失函数:
#自定义损失函数:
3#如预测商品销量,预测多了,损失成本,预测少了,损失利润
#若利润 不等于成本 ,测mse产生的loss无法利益最大化。
#自定义损失函数 loss(y_,y) = f(y_,y)求和
# y_标准答案的 y预测答案
# 数据集的 计算出的
#f(y_,y) = PROFIT *(y_-y) y<y_ 预测的y少了,损失利润(PROFIT)
# COST*(y-y_) y>=y_ 预测的y多了,损失成本(COST)
#loss = tf.reduce_sum(tf.where(tf.greater(y,y_),COST(y-y_),PROFIT(y_-y)))
# y>y_ ? 真 假
#如:预测酸奶销量,酸奶成本(COST)1元,酸奶利润(PROFIT)9元。
#预测少了损失利润9元,大于预测多了损失成本1元
#预测少了损失大,希望生成的预测函数往多了预测。
#交叉熵ce(Cross Entropy):表征两个概率分布之间的距离
#H(y_,y) = - y_*logy求和
#eg:二分类 已知答案y_=(1,0) 预测y1=(0.6,0.4) y2=(0.8,0.2) 那个更接近标准答案?
#H1((1,0),(0.6,0.4))=-(1*log0.6 + 0* log0.4) = -(0.22 + 0) =0.222
#H2((1,0),(0.8,0.2))=-(1*log0.8 + 0* log0.2) = -(-0.097+0) = 0.097
#所有y2预测更准
#ce = -tf.reduce_mean(y_*tg.log(t.clip_by_value(y,1e-12,1.0)))
# y小于1e-12为1e-12 大于1.0为1.0
#当n分类的n个输出(y1,y2,... yn)通过softmax()函数,便满足了概率分布要求:
#ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y,labels=tf.argmax(y_,1))
#cem = tf.reduce_mean(ce)