**質問１**

「ゼロから作るディープラーニング」を勉強していて、182pのところを読んでいたら、そもそもなんで、重みWの初期値を今までnp.random.randnというものにしていたのかがわからなくなりました。なのでなぜnp.random.randnを重みの初期値にするのかを教えていただきたいです。

**質問２**  
np.random.randnは「平均0、分散1（標準偏差1）の正規分布（標準正規分布）に従う乱数を返す。」とネットに書いてあったのですが、この意味もよくわかりません。試しに下のようにコードを実行して、平均が０になるのかと思ったら0になりませんでした。この文章の意味を教えていただきたいです。

```

    tu = np.random.randn(1,100)
    
    tuuu=0
    
    for i in range(100):
        tuuu += tu[0][i]
    print(tuuu/100)
    # 出力0.22453386331188382 ※毎回違う、平均０じゃないじゃんと思いました。
    
```
CC BY-SA 4.0
2021-06-12T07:44:07.263
77501
2021-06-13T20:43:31.010
2021-06-12T08:51:19.283
19110
46838
question
python 機械学習 ニューラルネットワーク
なぜ重みの初期値にnp.random.randnを用いるのか？
#### 重み (Weight) の初期値をなぜ np.random.randn にするのか

[ゼロから作るDeepLearning 6章を学ぶ
〜重みの初期値について〜](https://www.takapy.work/entry/2018/06/14/221633) の記事が詳しいかも  
勾配がゼロになると学習が進まなくなるので, 勾配損失が起きないような初期値を与えることは大切です

[ニューラルネットワークの学習でしていること](https://www.atmarkit.co.jp/ait/articles/2004/27/news020.html)
なども参考になるかも？

* * *

#### np.random.randnは「平均0、分散1（標準偏差1）の正規分布（標準正規分布）」

サイコロ振って 5回とも違う目が出て, 6回目は残ってる最後のひとつに決まってる … などということはありません。  
99回の乱数出たあと, 残りひとつでちょうど平均ゼロになったなら, 「numpy.random さん, 仕事しろ !!」って話になります

```

    import matplotlib.pyplot as plt
    import numpy as np
    
    fig, ax = plt.subplots()
    num = []
    mean = []
    std = []
    for cnt in range(1, 1200):
        data = np.random.randn(cnt)
        num.append(cnt)
        mean.append(data.mean())
        std.append(data.std())
    
    ax.scatter(num, mean, label='mean')
    ax.set_xlabel('count')
    ax.set_ylabel('mean')
    ax.legend(loc=4)
    ax2 = ax.twinx()
    ax2.scatter(num, std, color='r', label='std')
    ax2.set_ylabel('std')
    ax2.legend(loc=1)
    
```

試しに作ってみました。5万とか 10万くらいで, 滑らかに, 平均0、分散1 に **近づいて** いきます

[![実行結果](https://i.stack.imgur.com/bd8HA.png)](https://i.stack.imgur.com/bd8HA.png)
CC BY-SA 4.0
2021-06-12T11:47:19.457
77508
2021-06-12T20:30:46.817
2021-06-12T20:30:46.817
43025
43025
77501
answer
[このサイト](https://teratail.com/questions/343724)を見ればわかると思います。teratailで回答をしてくださった方がいます。
CC BY-SA 4.0
2021-06-13T20:43:31.010
77535
2021-06-13T20:43:31.010
46838
77501
answer