【问题标题】:How do you know which layers and how many layers to use? [closed]你怎么知道要使用哪些层和多少层? [关闭]
【发布时间】:2019-07-27 09:08:24
【问题描述】:

我是机器学习的新手,并且花了一些时间学习 python。我已经开始学习 TensorFlow 和 Keras 来进行机器学习,但我实际上对制作模型的过程一无所知,也不了解。你怎么知道要使用哪些模型?使用哪些激活函数?输出空间的层数和维度?

我注意到大多数模型都是 Sequential 类型,并且往往有 3 层,这是为什么呢?我找不到任何资源来解释使用哪个、为什么使用它们以及何时使用。我能找到的最好的是 tensorflow 的功能细节。任何详细说明或任何需要澄清的资源将不胜感激。

谢谢。

【问题讨论】:

    标签: python python-3.x tensorflow keras keras-layer


    【解决方案1】:

    我建议您继续阅读有关机器学习的更多信息。这里的一个是多部分的解释。 免责声明:我不认识作者,这不是我自己的作品。

    另外,我建议您进行一个简单的思想实验,您可以在其中进行二元分类,并且必须考虑激活函数的不同形状如何影响您的结果。

    https://medium.com/machine-learning-for-humans/why-machine-learning-matters-6164faf1df12

    关于您的模型选择:这在很大程度上取决于您的数据和您希望探索的内容。如果我是你,我会尝试首先可视化你的数据,看看是否有任何有趣的关系。

    例如,seaborn pairplot (https://seaborn.pydata.org/generated/seaborn.pairplot.html) 是一种可视化变量之间关系的方法。如果您有很多数据点,我建议只使用最多几百个数据点的样本,因为否则该图可能需要很长时间才能绘制。也可以试试DataShader,不过我个人没用过。

    将数据可视化后,请尝试实际思考这些关系在变量之间可能意味着什么。使用这些机器学习模型之前完成所有这些操作将在您尝试实现上述帖子中的一些模型时为您提供指导。

    此外,有时某些深度学习算法并不是最好的方法。 通常(取决于您是在处理分类问题还是回归问题)线性(或多重线性)回归就足够了。对于回归问题,我通常从(多重)线性回归作为我的基线模型开始,然后在尝试花哨的深度神经网络之前通过正则化对其进行改进。

    深度神经网络的训练速度比线性模型慢,很容易过度拟合您的数据,甚至可以提供与更简单的线性回归相同(甚至更糟!)的结果。 从一开始就直接将深度学习应用于众多问题时,请考虑一下您是否是在努力寻找钉子。

    希望这会有所帮助。

    TLDR:

    1. 可视化您的数据并确定是否要进行回归或分类
    2. 从简单的线性模型开始作为基线和计算性能指标(例如 MSE)
    3. (希望)使用神经网络进行改进,看看在您的情况下额外的收益是否值得。在某些时候,您可能需要尝试不同的激活函数,看看哪个更适合您的情况。

    【讨论】:

      【解决方案2】:

      没有人真正知道为什么某些架构会起作用,这仍然是一个持续讨论的话题(例如,参见 this paper)。

      找到可行的架构主要是反复试验,并采用或修改似乎适用于相关任务和数据集大小的现有架构。

      我会推荐您到 Goodfellow, Bengio, and Courville's book,这是一个很好的资源,可以帮助您开始机器学习,尤其是深度学习。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-02
        • 2012-06-12
        • 2016-04-28
        • 2011-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-14
        相关资源
        最近更新 更多