權重初始化方式對神經網路迭代次數的影響
做一個網路
輸入X範圍是[1e-16,37]
權重初始化方式
Random rand1 =new Random();
int ti1=rand1.nextInt(98)+1;
tw[a][b]=(double)ti1/n;
學習率0.1
本文用於檢測當n分別等於50,100,200,300,400,500,1000時對迭代次數是否有影響。
得到的資料如下
#50 | #100 | #200 | #300 | #400 | #500 | #1000 | |
1e-5*11*11*1e-5 | 515690.56 | 1151745.985 | 2442883.495 | 1042074.315 | 64498.62 |
56510.775 | 50278.48 |
1e-4*11*11*1e-4 | 538336.22 | 1140325.425 | 2456006.97 | 556370.145 | 58516.835 | 58154.21 | 49405.25 |
1e-3*11*11*1e-3 | 515657.815 | 1181040.275 | 2631372.3 | 995064.645 | 59504.625 | 54353.44 | 50357.935 |
1e-2*11*11*1e-2 | 524385.4 | 1149965.665 | 2448382.15 | 1149738.31 |
91348.485 | 57477.815 | 49364.26 |
0.1*11*11*0.1 | 466648.73 | 1023284.48 | 2530742.245 | 2146998.835 | 171378.415 | 60060.805 | 49182.16 |
1*11*11*1 | 269628.89 | 507738.58 | 1193861.05 | 2005743.37 | 2752611.045 | 3334475.955 | 57438.16 |
2*11*11*2 | 215952.105 | 338796.91 | 762422.04 | 1341740.89 |
1788425.735 | 2468127.52 | 564607.03 |
3*11*11*3 | 196236.455 | 272292.105 | 680873.4 | 1084323.92 | 1449072.63 | 2018767.03 | 1764958.1 |
4*11*11*4 | 187556.205 | 264077.425 | 600728.635 | 1014091.78 | 1398991.365 | 1922227.875 | 2092883.28 |
5*11*11*5 | 189551.09 | 256461.865 | 588419.74 | 910780.35 | 1290084.505 | 1786341.78 | 2279545.655 |
6*11*11*6 | 182710.855 | 251478.63 | 614340.585 | 1004629.11 | 1317827.625 | 1862401.95 | 2300141.175 |
7*11*11*7 | 182428.85 | 251915.34 | 608052.375 | 975472.28 | 1365238.66 | 1818134.405 | 2301074.53 |
8*11*11*8 | 185063.05 | 254112.845 | 568591.285 | 959487.245 | 1379721.04 | 1655470.885 | 2080430.445 |
9*11*11*9 | 182868.76 | 255234.11 | 579499.295 | 965944.865 | 1289923.15 | 1779299.45 | 2199222.36 |
10*11*11*10 | 190904.745 | 258464.335 | 605392.56 | 956794.66 | 1373901.005 | 1690353.16 | 2154894.06 |
因為迭代次數只有兩個基本狀態和一個過渡狀態
小區間 |
基本狀態 |
[1e-16,0.1] |
過渡區間 |
過渡態 |
[1,3] |
大區間 |
基本狀態 |
[4,37] |
為了加快計算本文只計算了1e-5到10
當n=50,100,200的影象為
可以看到隨著n的增加,大區間[4,37]在明顯的向上移動,曲線是遞減。
TensorFlow中的迭代次數是一個固定值,如果大區間和小區間的迭代次數相差比較大就會出現問題
比如當n=100時
小區間迭代次數 |
1129272 |
大區間迭代次數 |
255963.5 |
如果將TensorFlow的迭代次數定位800000就會使小區間反應不足,大區間反應過度。
因為小區間要1129272次迭代才都能達到要求精度,800000次迭代相當於只完成了總任務的71%。而大區間只要255963次就可以達到要求精度,800000次迭代相對大區間來說有68%的計算是浪費的。
同樣如果選一個比較大的迭代次數比如1400000這樣雖然小區間和大區間都可以達到要求精度但是這樣做只會造成算力的更大浪費。
所以最好可以通過調整權重初始化方式得到一條相對差距比較小的線。
當n=400,500,1000時的影象
這張圖片隨著n的增加,大區間也是增加的,但影象近似是遞增的。
所以一定有個從遞減過渡到遞增狀態的n值使得小區間和大區間的迭代次數幾乎相等,使整條曲線看起來相對平直。經過實驗這個n值大致在300左右
當n=300時從1e-16到37的曲線資料
a |
b |
迭代次數 |
時間ms |
時間min |
||
300 |
1e-16*11*11*1e-16 |
0.494442208 |
0.495641938 |
1177391.87 |
1650993 |
27.51655 |
300 |
1e-15*11*11*1e-15 |
0.495423001 |
0.495922727 |
1028492.8 |
1436999 |
23.94998 |
300 |
1e-14*11*11*1e-14 |
0.495842043 |
0.495641787 |
931314.04 |
1294996 |
21.58327 |
300 |
1e-13*11*11*1e-13 |
0.495004211 |
0.495304312 |
881531.34 |
1223201 |
20.38668 |
300 |
1e-12*11*11*1e-12 |
0.494611448 |
0.495411409 |
928887.445 |
1285013 |
21.41688 |
300 |
1e-11*11*11*1e-11 |
0.495657121 |
0.494857016 |
869741.21 |
1212002 |
20.20003 |
300 |
1e-10*11*11*1e-10 |
0.495416301 |
0.495516346 |
822223.815 |
1147814 |
19.13023 |
300 |
1e-9*11*11*1e-9 |
0.495270974 |
0.495870804 |
1157183.93 |
1602565 |
26.70942 |
300 |
1e-8*11*11*1e-8 |
0.494929204 |
0.49442933 |
868996.86 |
1203788 |
20.06313 |
300 |
1e-7*11*11*1e-7 |
0.494712489 |
0.495112484 |
820649.265 |
1136546 |
18.94243 |
300 |
1e-6*11*11*1e-6 |
0.495338595 |
0.49523856 |
1110117.41 |
1536870 |
25.6145 |
300 |
1e-5*11*11*1e-5 |
0.496218585 |
0.495418654 |
1042074.32 |
1401070 |
23.35117 |
300 |
1e-4*11*11*1e-4 |
0.494981464 |
0.495381376 |
556370.145 |
784736 |
13.07893 |
300 |
1e-3*11*11*1e-3 |
0.495269247 |
0.496369031 |
995064.645 |
1376768 |
22.94613 |
300 |
1e-2*11*11*1e-2 |
0.49554725 |
0.49604707 |
1149738.31 |
1586597 |
26.44328 |
300 |
0.1*11*11*0.1 |
0.498097369 |
0.497897428 |
2146998.84 |
2974100 |
49.56833 |
300 |
1*11*11*1 |
0.502245991 |
0.500445991 |
2005743.37 |
2800078 |
46.66797 |
300 |
2*11*11*2 |
0.501306968 |
0.501406967 |
1341740.89 |
1969331 |
32.82218 |
300 |
3*11*11*3 |
0.502139484 |
0.500539485 |
1084323.92 |
1404763 |
23.41272 |
300 |
4*11*11*4 |
0.50137864 |
0.501278641 |
1014091.78 |
1446365 |
24.10608 |
300 |
5*11*11*5 |
0.501640009 |
0.500840009 |
910780.35 |
1301624 |
21.69373 |
300 |
6*11*11*6 |
0.501153924 |
0.501553924 |
1004629.11 |
1425911 |
23.76518 |
300 |
7*11*11*7 |
0.501061144 |
0.501461144 |
975472.28 |
1281737 |
21.36228 |
300 |
8*11*11*8 |
0.500697758 |
0.501897758 |
959487.245 |
1333199 |
22.21998 |
300 |
9*11*11*9 |
0.50157167 |
0.500971671 |
965944.865 |
1334896 |
22.24827 |
300 |
10*11*11*10 |
0.50154289 |
0.50104289 |
956794.66 |
1320600 |
22.01 |
300 |
11*11*11*11 |
0.500586866 |
0.501986866 |
953683.75 |
1327746 |
22.1291 |
300 |
12*11*11*12 |
0.501304336 |
0.501404336 |
1003937.46 |
1397277 |
23.28795 |
300 |
13*11*11*13 |
0.501390429 |
0.501390429 |
1021429.5 |
1450694 |
24.17823 |
300 |
14*11*11*14 |
0.501096067 |
0.501596067 |
1000931.95 |
1421634 |
23.6939 |
300 |
15*11*11*15 |
0.501186367 |
0.501286367 |
933033.265 |
1225792 |
20.42987 |
300 |
16*11*11*16 |
0.501117028 |
0.501417028 |
965515.97 |
1364626 |
22.74377 |
300 |
17*11*11*17 |
0.50155269 |
0.50115269 |
984877.165 |
1322929 |
22.04882 |
300 |
18*11*11*18 |
0.501249006 |
0.501349006 |
978266.335 |
1374509 |
22.90848 |
300 |
19*11*11*19 |
0.501139341 |
0.501439341 |
954977.96 |
1261967 |
21.03278 |
300 |
20*11*11*20 |
0.501726519 |
0.50082652 |
915192.715 |
1288190 |
21.46983 |
300 |
21*11*11*21 |
0.501756803 |
0.500656803 |
931755.655 |
1259473 |
20.99122 |
300 |
22*11*11*22 |
0.50169384 |
0.500893841 |
953562.595 |
1369851 |
22.83085 |
300 |
23*11*11*23 |
0.501966721 |
0.500666722 |
974836.26 |
1392312 |
23.2052 |
300 |
24*11*11*24 |
0.500926601 |
0.501826601 |
1007493.42 |
1297924 |
21.63207 |
300 |
25*11*11*25 |
0.501248655 |
0.501348655 |
959407.15 |
1355909 |
22.59848 |
300 |
26*11*11*26 |
0.501788982 |
0.500588983 |
894844.8 |
1169148 |
19.4858 |
300 |
27*11*11*27 |
0.502008374 |
0.500708374 |
977159.395 |
1349999 |
22.49998 |
300 |
28*11*11*28 |
0.501231491 |
0.501531491 |
987814.115 |
1414880 |
23.58133 |
300 |
29*11*11*29 |
0.501010278 |
0.501510278 |
947537.17 |
1336615 |
22.27692 |
300 |
30*11*11*30 |
0.501148884 |
0.501448884 |
971459.105 |
1339156 |
22.31927 |
300 |
31*11*11*31 |
0.500801108 |
0.501801107 |
964687.26 |
1247136 |
20.7856 |
300 |
32*11*11*32 |
0.501831602 |
0.500731601 |
919605.625 |
1270044 |
21.1674 |
300 |
33*11*11*33 |
0.500173133 |
0.502173132 |
893372.425 |
1231927 |
20.53212 |
300 |
34*11*11*34 |
0.501175259 |
0.501475259 |
969989.405 |
1370819 |
22.84698 |
300 |
35*11*11*35 |
0.501798376 |
0.500898377 |
958747.39 |
1372639 |
22.87732 |
300 |
36*11*11*36 |
0.501015419 |
0.501515419 |
929651.26 |
1236913 |
20.61522 |
300 |
37*11*11*37 |
0.501609929 |
0.501109929 |
999093.72 |
1426979 |
23.78298 |
將迭代次數畫成圖
可以看到這條曲線要平直的多。
小區間迭代次數 |
1030423.51 |
大區間迭代次數 |
962943.032 |
平均 |
996683.273 |
小區間和大區間的迭代次數只相差6.5%。
也就是在TensorFlow的環境中這個網路的權重初始化為ti1/300
應該可以相當程度上避免由於迭代曲線的巨大波動導致的反應過度和反應不足的問題,使網路在輸入整個區間上效能都相對平穩,又可以避免算力的浪費。
理論收斂迭代次數為996