美文网首页deeplearning.ai
为什么Ng在deeplearning.ai的课程中说过,神经网络

为什么Ng在deeplearning.ai的课程中说过,神经网络

作者: 2e07917c964c | 来源:发表于2018-12-24 17:06 被阅读0次

    问题:

    为什么Ng在deeplearning.ai的课程中说过,神经网络一定不能全部初始化为零,但在他的logic回归作业中用的却是零初始化?作业是:作业目录中的第2周第2次作业具有神经网络思维的Logistic回归,代码为:

    def initialize_with_zeros(dim):
        """
            此函数为w创建一个维度为(dim,1)的0向量,并将b初始化为0。
    
            参数:
                dim  - 我们想要的w矢量的大小(或者这种情况下的参数数量)
    
            返回:
                w  - 维度为(dim,1)的初始化向量。
                b  - 初始化的标量(对应于偏差)
        """
        w = np.zeros(shape = (dim,1))
        b = 0
        #使用断言来确保我要的数据是正确的
        assert(w.shape == (dim, 1)) #w的维度是(dim,1)
        assert(isinstance(b, float) or isinstance(b, int)) #b的类型是float或者是int
    
        return (w , b)
    

    可以看出它是零初始化,但Ng却说神经网络不能零初始化的,但是在这个例子确实有效,也就是说可以零初始化,那Ng错了吗?为什么?

    答案:

    1、Ng说的是神经网络不能零初始化,而这个例子只是logistic回归,它没有隐藏层,所以不算是神经网络,且Ng在教学视频的第一部分『神经网络与深度学习』中的第二周里的「梯度下降法」中的2分38秒时明确说了,logistic回归的权值初始化可以是任意初始化方法,包括全0初始化。同时,Ng在教学视频的『神经网络与深度学习』中第四周的『随机初始化』中开篇又强调了这一点,并且又用这个视频来解释了为什么神经网络权重不能初始化为0。
    2、那为什么logistic回归可以全0初始化呢?对于这个问题,Ng特意在该次作业的下一次,也就是第3周的第一次测验中的第7题来回答了这个问题,具体为:

    Logistic Regression doesn’t have a hidden layer. If you initialize the weights to zeros, the first example x fed in the logistic regression will output zero but the derivatives of the Logistic Regression depend on the input x (because there’s no hidden layer) which is not zero. So at the second iteration, the weights values follow x’s distribution and are different from each other if x is not a constant vector.
    翻译为:Logistic回归没有隐藏层。 如果将权重初始化为零,则Logistic回归中的第一个示例x将输出零,但Logistic回归的导数取决于不是零的输入x(因为没有隐藏层)。 因此,在第二次迭代中,如果x不是常量向量,则权值遵循x的分布并且彼此不同。

    相关文章

      网友评论

        本文标题:为什么Ng在deeplearning.ai的课程中说过,神经网络

        本文链接:https://www.haomeiwen.com/subject/ekvzkqtx.html