用两个矩阵的点积计算神经网络的迭代次数 2-8

每个神经网络对应每个收敛标准δ都有一个特征的迭代次数n,因此可以用迭代次数曲线n(δ)来评价网络性能。

在《神经网络的迭代次数是一个线性的变量吗?》中得到表达式

一个二分类网络分类两个对象A和B,B中有K张图片,B的第i张图片被取样的概率为pi,B中第i张图片相对A的迭代次数为ni,最终的迭代次数nt等于pi*ni的累加和。

由此可以构造两个矩阵一个是随机矩阵PJ和迭代次数矩阵NJ

总的迭代次数nt等于矩阵PJ和NJ的点积

PJ表明图片集B中第i张图片被抽样到的概率为pi

NJ表明图片集B中第i张图片相对A的迭代次数为ni

由此总迭代次数nt可以通过构造矩阵PJ和矩阵NJ的方法精确的控制

本文分别制作两个矩阵让

 

本文验证这个乘法关系是否成立

 

 

制作一个二分类网络区分数据集mnist0和数据集B,其中B中只有两张图片,两张图片被抽样到的概率比是8:2.

 

本文验算这个表达式是否正确

实验过程

首先用实验的方法测量n1

制作一个带一个3*3卷积核的神经网络,测试集是mnist的0和一张图片x,将28*28的图片缩小成9*9,隐藏层30个节点所以网络的结构是

 

这个网络分成两个部分左边的是让mnist 0向1,0收敛,右边的是让x向 0,1收敛。但是让左右两边的权重实现同步更新,实现权重共享。前面大量实验表明这种效果相当于将两个弹性系数为k1,k2的弹簧并联成一个弹性系数为k的弹簧,并且让k1=k2=k/2的过程。

将上图简写成

S(mnist0)81-(con3*3)49-30-2-(1,0)

S(x)81-(con3*3)49-30-2-(0,1)

w=w,w1=w1,w2=w2

进一步简写成

d2(mnist0, x=1)81-con(3*3)49-30-2-(2*k) ,k∈{0,1}

这个网络的收敛标准是

if (Math.abs(f2[0]-y[0])< δ  &&  Math.abs(f2[1]-y[1])< δ   )

本文尝试了δ从0.5到1e-6在内的26个值,训练集是mnist0

图片x就是一张二维数组,让x=1.

具体进样顺序

    

进样顺序

迭代次数

   

δ=0.5

    

mnist 0-1

1

 

判断是否达到收敛

X

2

 

判断是否达到收敛

梯度下降

    

mnist 0-2

3

 

判断是否达到收敛

X

4

 

判断是否达到收敛

梯度下降

    

……

    

mnist 0-4999

9997

 

判断是否达到收敛

X

9998

 

判断是否达到收敛

梯度下降

    

……

    

如果4999图片内没有达到收敛标准再次从头循环

  

mnist 0-1

9999

 

判断是否达到收敛

X

10000

 

判断是否达到收敛

……

    

达到收敛标准记录迭代次数,将这个过程重复199次

   

δ=0.4

    

……

    

 

用这个方法可以得到网络

d2(mnist0, x=1)81-con(3*3)49-30-2-(2*k) ,k∈{0,1}

的迭代次数曲线n1。

 

第二步测量n0.1

用同样的办法制作另一个网络

d2(mnist0, x=0.1)81-con(3*3)49-30-2-(2*k) ,k∈{0,1}

让mnist 0向1,0收敛,右边的是让x向 0,1收敛。但让x=0.1.得到迭代次数曲线n0.1

 

实验数据

在《测量一组对角矩阵的频率和质量》中已经将这两个迭代次数都测出来了

 

1

0.1

δ

迭代次数n1

迭代次数n0.1

0.5

17.40201005

17.87437186

0.4

951.2110553

1408.577889

0.3

1144.577889

1720.517588

0.2

1313.633166

1995.110553

0.1

1505.824121

2243.834171

0.01

2362.115578

3001.552764

0.001

4129.020101

4007.532663

1.00E-04

10353.37186

5532.668342

9.00E-05

10653.93467

5683.753769

8.00E-05

11292.43719

6131.934673

7.00E-05

11761.11055

6106.919598

6.00E-05

12657.69347

6014.688442

5.00E-05

13305.44221

6455.321608

4.00E-05

15844.29648

6724.738693

3.00E-05

17291.77387

7055.80402

2.00E-05

20753.56281

7763.41206

1.00E-05

27708.19598

8749.050251

9.00E-06

29358.8593

8879.41206

8.00E-06

30689.87437

9387.150754

7.00E-06

33437.22111

9532.648241

6.00E-06

36960.63819

9957.683417

5.00E-06

40669.92462

10661.56281

4.00E-06

44594.04523

11025.0402

3.00E-06

51522.10553

11653.63317

2.00E-06

67583.53266

13076.9196

1.00E-06

107224.5276

15184.58794

 

现在做第3个网络

d2(mnist0  ; 80% x=1, 20%x=0.1)81-con(3*3)49-30-2-(2*k) ,k∈{0,1}

让mnist 0向1,0收敛,右边的是让x向 0,1收敛。但让x在1和0.1之间随机。

让1与0.1的比例是8:2.

具体进样顺序

   

 

进样顺序

迭代次数

  

 

δ=0.5

   

 

mnist 0-1

1

 

判断是否达到收敛

80% x=1,20% x=0.1

2

 

判断是否达到收敛

梯度下降

   

 

mnist 0-2

3

 

判断是否达到收敛

80% x=1,20% x=0.1

4

 

判断是否达到收敛

梯度下降

   

 

……

   

 

mnist 0-4999

9997

 

判断是否达到收敛

80% x=1,20% x=0.1

9998

 

判断是否达到收敛

梯度下降

   

 

……

   

 

如果4999图片内没有达到收敛标准再次从头循环

 

 

mnist 0-1

9999

 

判断是否达到收敛

80% x=1,20% x=0.1

10000

 

判断是否达到收敛

……

   

 

达到收敛标准记录迭代次数,将这个过程重复199次

  

 

δ=0.4

   

 

……

   

 

相当于分类两个图片集,一个图片集是mnist的0另一个图片集只有两张图片,两张图片被取样的概率是8:2

得到的数据

用0和x二分类

        

1:0.1=8:2

        
         

f2[0]

f2[1]

迭代次数n

平均准确率p-ave

δ

耗时ms/次

耗时ms/199次

耗时min/199次

最大准确率p-max

0.50566328

0.497763951

17.31155779

0.505501503

0.5

921.0653266

183323

3.055383333

0.861938534

0.606609999

0.393211865

977.2964824

0.477251506

0.4

1112.351759

221358

3.6893

0.963120567

0.713338671

0.286631874

1244.819095

0.545928223

0.3

1166.467337

232127

3.868783333

0.992434988

0.814994506

0.184507552

1367.894472

0.579702294

0.2

1188.100503

236432

3.940533333

0.997163121

0.909871883

0.090147713

1622.60804

0.594867957

0.1

1234.457286

245672

4.094533333

0.995744681

0.991991547

0.008022444

2451.462312

0.606966273

0.01

1401.79397

278973

4.64955

0.997163121

0.999243349

7.56E-04

4189.592965

0.54157549

0.001

1755.160804

349277

5.821283333

0.996690307

0.999918398

8.18E-05

9589.763819

0.513579719

1.00E-04

2860.809045

569301

9.48835

0.992907801

0.999927347

7.27E-05

9769.472362

0.528847547

9.00E-05

2575.964824

512617

8.543616667

0.995271868

0.999937071

6.28E-05

10447.81407

0.520938023

8.00E-05

3024.321608

601840

10.03066667

0.993853428

0.999943494

5.65E-05

11190.78894

0.520569752

7.00E-05

3179.547739

632730

10.5455

0.995744681

0.999951392

4.86E-05

11462.45729

0.526839873

6.00E-05

3200.095477

636827

10.61378333

0.995271868

0.999960481

3.95E-05

12531.89447

0.509782957

5.00E-05

3412.919598

679175

11.31958333

0.987234043

0.999967762

3.23E-05

13652.90955

0.520239495

4.00E-05

3205.512563

637897

10.63161667

0.993853428

0.999975773

2.43E-05

15084.02513

0.516088718

3.00E-05

3937.758794

783620

13.06033333

0.997163121

0.999983453

1.65E-05

17850.52764

0.509438445

2.00E-05

4596.673367

914740

15.24566667

0.994326241

0.999991715

8.29E-06

25200.21608

0.516967818

1.00E-05

4941.844221

983443

16.39071667

0.989598109

0.99999284

7.16E-06

25605.17085

0.515739454

9.00E-06

4968.120603

988673

16.47788333

0.989598109

0.999993474

6.52E-06

28406.36683

0.524064768

8.00E-06

5459.522613

1086445

18.10741667

0.994326241

0.999994401

5.60E-06

28608.58794

0.521154234

7.00E-06

5223.728643

1039538

17.32563333

0.986761229

0.999995111

4.89E-06

32479.66332

0.509533483

6.00E-06

6074.311558

1208788

20.14646667

0.995271868

0.999995947

4.06E-06

36849.28141

0.495180394

5.00E-06

6820.743719

1357328

22.62213333

0.98250591

0.999996768

3.23E-06

36909.13065

0.504486974

4.00E-06

6836.849246

1360549

22.67581667

0.98392435

0.999997515

2.48E-06

43731.97487

0.494505625

3.00E-06

7944.974874

1581050

26.35083333

0.991962175

0.999998265

1.74E-06

62934.13568

0.491236323

2.00E-06

10640.96985

2117553

35.29255

0.990070922

0.999999125

8.74E-07

93680.26633

0.497100158

1.00E-06

16180.28141

3219876

53.6646

0.992907801

 

所以现在有了3个迭代次数分别是

x=1

n1

x=0.1

n0.1

0.8x=1||0.2x=0.1

n1-0.1

 

验算n1-0.1与n1和n0.1之间的关系

 

1

0.1

理论值

实测值

 

δ

迭代次数n1

迭代次数n0.1

0.8*n1+0.2*n0.1

 

理论值/实测值

0.5

17.40201005

17.87437186

17.49648241

17.31155779

1.010682148

0.4

951.2110553

1408.577889

1042.684422

977.2964824

1.066906963

0.3

1144.577889

1720.517588

1259.765829

1244.819095

1.012007153

0.2

1313.633166

1995.110553

1449.928643

1367.894472

1.059971125

0.1

1505.824121

2243.834171

1653.426131

1622.60804

1.018992936

0.01

2362.115578

3001.552764

2490.003015

2451.462312

1.015721516

0.001

4129.020101

4007.532663

4104.722613

4189.592965

0.979742578

1.00E-04

10353.37186

5532.668342

9389.231156

9589.763819

0.979088884

9.00E-05

10653.93467

5683.753769

9659.898492

9769.472362

0.988784055

8.00E-05

11292.43719

6131.934673

10260.33668

10447.81407

0.982055827

7.00E-05

11761.11055

6106.919598

10630.27236

11190.78894

0.949912684

6.00E-05

12657.69347

6014.688442

11329.09246

11462.45729

0.988365076

5.00E-05

13305.44221

6455.321608

11935.41809

12531.89447

0.952403335

4.00E-05

15844.29648

6724.738693

14020.38492

13652.90955

1.026915536

3.00E-05

17291.77387

7055.80402

15244.5799

15084.02513

1.010644027

2.00E-05

20753.56281

7763.41206

18155.53266

17850.52764

1.017086611

1.00E-05

27708.19598

8749.050251

23916.36683

25200.21608

0.949054038

9.00E-06

29358.8593

8879.41206

25262.96985

25605.17085

0.986635473

8.00E-06

30689.87437

9387.150754

26429.32965

28406.36683

0.930401617

7.00E-06

33437.22111

9532.648241

28656.30653

28608.58794

1.001667981

6.00E-06

36960.63819

9957.683417

31560.04724

32479.66332

0.971686404

5.00E-06

40669.92462

10661.56281

34668.25226

36849.28141

0.940812166

4.00E-06

44594.04523

11025.0402

37880.24422

36909.13065

1.02631093

3.00E-06

51522.10553

11653.63317

43548.41106

43731.97487

0.995802526

2.00E-06

67583.53266

13076.9196

56682.21005

62934.13568

0.900659228

1.00E-06

107224.5276

15184.58794

88816.5397

93680.26633

0.948081631

 

 

从数值看

这个公式还是符合的很好的。

表明神经网络的迭代次数可以被看作是一个线性变量可以用概率矩阵和迭代次数矩阵的点积来计算。

 

实验参数

学习率 0.1

权重初始化方式

Random rand1 =new Random();

int ti1=rand1.nextInt(98)+1;

int xx=1;

if(ti1%2==0)

{ xx=-1;}

tw[a][b]=xx*((double)ti1/x);

第一层第二层和卷积核的权重的初始化的x分别为1000,1000,200

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑榆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值