神经网络进一步优化

学习率设置

学习率过大会导致,参数在极优值两侧来回移动。学习率过小,会导致优化速度大大降低。常用指数衰减法设置学习率

指数衰减法

实现以下功能:

decayed_learning_rate = 
learning_rate * decay_rate^(global_step/decay_steps)

decayed_learning_rate是每一轮优化时候使用的学习率,
learning_rate是事先设定的初始学习率,
decay_rate为衰减系数,decay_steps为衰减速度。

TRAINING_STEPS = 100
global_step = tf.Variable(0)

#通过exponential_decay函数生成学习率,s
#taircase=True时,global_step/decay_steps会转化为整数,学习率为阶梯函数。
LEARNING_RATE = tf.train.exponential_decay(0.1, global_step, 1, 0.96, staircase=True)

x = tf.Variable(tf.constant(5, dtype=tf.float32), name="x")
y = tf.square(x)

#使用指数衰减的学习率,在minimize函数中传入
#global_step将自动更新global_step参数,从而使得学习率也相应更新
train_op = tf.train.GradientDescentOptimizer(
LEARNING_RATE).minimize(y, global_step=global_step)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for i in range(TRAINING_STEPS):
        sess.run(train_op)
        if i % 10 == 0:
            LEARNING_RATE_value = sess.run(LEARNING_RATE)
            x_value = sess.run(x)
            print "After %s iteration(s): x%s is %f, learning rate is %f."% (i+1, i+1, x_value, LEARNING_RATE_value)
After 1 iteration(s): x1 is 4.000000, learning rate is 0.096000.
After 11 iteration(s): x11 is 0.690561, learning rate is 0.063824.
After 21 iteration(s): x21 is 0.222583, learning rate is 0.042432.
After 31 iteration(s): x31 is 0.106405, learning rate is 0.028210.
After 41 iteration(s): x41 is 0.065548, learning rate is 0.018755.
After 51 iteration(s): x51 is 0.047625, learning rate is 0.012469.
After 61 iteration(s): x61 is 0.038558, learning rate is 0.008290.
After 71 iteration(s): x71 is 0.033523, learning rate is 0.005511.
After 81 iteration(s): x81 is 0.030553, learning rate is 0.003664.
After 91 iteration(s): x91 is 0.028727, learning rate is 0.002436.

过拟合问题

过拟合指的是当模型过复杂后,模型很好的“记忆”了每一个训练中随机噪声部分,而没有学习训练数据追中通用的趋势。

解决办法正则化

正则化:就是在损失函数中加入刻画模型复杂度的指标。
设损失函数为J(teta),lambda是模型复杂损失在总损失中的比例,R(w)刻画模型复杂程度

J(\theta)+\lambda R(w)

R(w)可以取参数的绝对值和,也可以取参数的平方和

R(w)=||w||_1=\sum_i|w_i|
R(w)=||w||_2=\sum_i|w_i^2|

L1和L2结合的方式

R(w)=\sum_i\alpha|w_i^2| + (1-\alpha)w_i^2

tensorflow中实现

loss = tf.reduce_mean(tf.square(y_ - y))+tf.contrib.layers.l2_regularizer(lambda)(w)

滑动平均模型

在采用梯度下降算法训练神经网络时,采用滑动平均模型一定程度导航提高最终模型在测试数据上的表现。
TensorFlow中使用

tf.train.ExponentialMovingAverage(衰减率)(控制衰减率的变量)
内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值