1、前向传播 搭建网络结构,反向传播 训练网络参数。
2、激活函数 提高了模型的表达里,使模型更具有表达力。
3、神经网络的层数,通常用神经网络的层数和神经网络待优化的参数的个数 来表示,层数 = 隐藏层的层数 + 1个输出层,总参数 = 总W + 总b
4、神经网络的优化
四个方面:损失函数loss、学习率learning_rate、滑动平均ema、正则化regularization (1)损失函数(loss):预测值(y)与已知答案(y_)的差距。(即前向传播计算出的结果 与 已知标准答案的 差距) NN 优化目标:使loss最小。主流的loss计算方法: a) mse(Mean Squared Erros) b) 自定义 c) ce(Cross Entropy)(交叉熵) (2)均方误差 mse:MSE(y_, y)loss_mse = tf.reduce_mean(tf.square(y_ - y)) (拟合可以预测销量的函数)
5、自定义损失函数 如预测商品销量,预测多了,损失成本;预测少了,损失利润。 若 利润 ≠ 成本,则mse产生的loss无法利益最大化。 自定义损失函数 y:标准答案数据集的; y_:预测答案 计算出的 损失和loss = tf.reduce_sum(tf.where(tf.greater(y, y_), COSE(y - y_), PROFIT(y_ - y))) 把所有的损失求和
6、交叉熵 表征两个概率分布之间的距离 交叉熵越大,两个概率分布越远;交叉熵越小,两个概率分布越近。 y_:标准答案的概率分布; y:预测结果的概率分布; 通过交叉熵的值,可以判断 哪个预测结果 与标准答案 最接近。 y—— = (1, 0)表示:第一种情况发生的概率是100%, 第二种情况发生的概率是0.ce = -tf.reduce_mean(y * tf.log(tf.clip_by_value(y, 1e-12, 1.0))) y小于1e-12时 值为1e-12(防止出现log0的错误); 大于1.0 为1.0(这是因为 输入的数 均满足概率分布,应该在0-1之间,不可能大于1) 在实际操作中,为了使前向传播产生的结果满足概率分布,及为了使n分类的n个输出(y1,y1, ..., yn)都在0-1之间,且它们的和为1,引入了softmax()函数当n分类的n个输出(y1, y2, ..., yn)通过softmax()函数,便满足了y概率分布要求 (yn表示 第n中情况 出现的可能性大小。对于n分类,有y1, y1, ..., yn n个输出。这n个输出 经过softmax()函数后,会符合概率分布。) (输出 经过softmax()函数 满足概率分布之后,再与标准答案 求交叉熵)
# 输出 经过softmax()函数 满足概率分布之后,再与标准答案 求交叉熵 ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y, labels=tf.argmax(y_, 1)) cenn = tf.reduce_mean(ce) # 这个输出cenn 就是:当前计算出的预测值 与 标准答案的 差距。也就是 损失函数示例代码:
#coding=utf-8 ''' 用自定义损失函数 预测酸奶日销量 ''' # 酸奶成功1元,酸奶利润9元 # 预测少了损失大,故不要预测少,故生成的模型会多预测一些 # 导入模块,生成数据集 import tensorflow as tf import numpy as np BATCH_SIZE = 8 SEED = 23455 COST = 1 PROFIT = 9 rdm = np.random.RandomState(SEED) X = rdm.rand(32, 2) Y = [[x1 + x2 + (rdm.rand()/10.0 - 0.05)] for (x1, x2) in X] # 1定义神经网络的输入、参数、输出,定义前向传播过程 x = tf.placeholder(tf.float32, shape=(None, 2)) y_ = tf.placeholder(tf.float32, shape=(None, 1)) w1 = tf.Variable(tf.random_normal([2, 1], stddev=1, seed=1)) y = tf.matmul(x, w1) # 计算出的 # 2定义损失函数及反向传播方法 # 定义损失函数 是的预测少了的损失大,于是模型应该偏向多的方向预测 loss = tf.reduce_sum(tf.where(tf.greater(y, y_), (y - y_) * COST, (y_ - y) * PROFIT)) train_step = tf.train.GradientDescentOptimizer(0.001).minimize(loss)
承接Matlab、Python和C++的编程,机器学习、计算机视觉的理论实现及辅导,本科和硕士的均可,咸鱼交易,专业回答请走知乎,详谈请联系QQ号757160542,非诚勿扰。