首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何减少神经网络训练对初始条件的依赖?

如何减少神经网络训练对初始条件的依赖?
EN

Stack Overflow用户
提问于 2020-07-26 06:28:33
回答 2查看 142关注 0票数 0

在这个简单的玩具示例中,网络倾斜XOR操作:

代码语言:javascript
复制
import tensorflow as tf
import numpy as np
from sklearn.metrics import accuracy_score, precision_score, recall_score


    model = tf.keras.Sequential(layers=[
        tf.keras.layers.Input(shape=(2,)),
        tf.keras.layers.Dense(4, activation='relu'),
        tf.keras.layers.Dense(1)
    ])

    model.compile(
        loss=tf.keras.losses.binary_crossentropy, 
        optimizer=tf.keras.optimizers.SGD(learning_rate=0.01)
    )

    x_train = np.random.uniform(-1, 1, (10000, 2))
    tmp = x_train > 0
    y_train = (tmp[:, 0] ^ tmp[:, 1])

    model.fit(x=x_train, y=y_train, epochs=10)

    x_test = np.random.uniform(-1, 1, (1000, 2))
    tmp = x_test > 0
    y_test = (tmp[:, 0] ^ tmp[:, 1])

    prediction = model.predict(x_test) > 0.5
    print(f'Accuracy: {accuracy_score(y_pred=prediction, y_true=y_test)}')
    print(f'recall: {recall_score(y_pred=prediction, y_true=y_test)}')
    print(f'precision: {precision_score(y_pred=prediction, y_true=y_test)}')

此示例也可在tensorflow游乐场中找到。

当初始损失小于3时,这将迅速收敛(在2-3期).但有时,初始条件导致它有~7损失,在这种情况下,它永远不会收敛(甚至在1000年代以后)。

在第一个时代之后,很容易知道它是否起作用,但这使得寻找超参数变得非常困难,因为你永远不知道是否由于初始条件而偶然地成功地收敛,或者超级参数是否是原因。

有没有办法使这个网络减少对初始条件的依赖?不同的优化器?一些优化器的超参数?体重正规化?

我试过改变这些,但没有得到持续的改进。

在操场的例子中,它永远不会被这种高损失所困扰。

编辑:如果你的训练时间足够长,它可能跳到损失7,即使在一个好的解决方案后,损失< 0.03。

EN

回答 2

Stack Overflow用户

发布于 2020-07-26 15:04:45

理论上,没有办法100%确定是超调还是初始配置。当出现分歧时,您需要为这种情况实现一些东西。

实际上,你可以:

  1. 多次培训,并将网络聚合到选择最佳超参数的策略中;
  2. 找到一些你觉得模型是一致的范围。
  3. 将您的权值初始化合并到您的超参数优化中。现在他们是随机初始化的,并且是问题的原因。有很多方法可以做到这一点。尝试使用不同的初始化程序,但是没有“针对每个ML问题的最佳初始化程序”。
  4. 只需修正初始条件。修复tensorflow使用的使用tf.random.set_seed初始化的随机种子,但这当然会对您的性能产生很大影响,所以我认为这并不是您真正想要的。您可以断言,您现在确信网络性能良好是因为该体系结构,但这只适用于特定的随机种子,而不是所有的人。
票数 0
EN

Stack Overflow用户

发布于 2021-01-05 10:45:07

根据这个博客的说法,添加批处理规范会降低网络对初始化方法的敏感性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63096850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档