In [1]:
from illustration_optim import (
    PlotComparaison, RATIO
)

In [2]:
xixi = PlotComparaison()

print("起始点为({}, {})".format(xixi.x1_init, xixi.x2_init))
num_ite = 10


起始点为(1.1753443509580985, 0.3460488575745282)

In [3]:
xixi.draw_gd(num_ite)
xixi.draw_common("Optimize x1^2+x2^2*{} Using SGD".format(RATIO ** 2))
xixi.show()


第1次迭代后,坐标为(0.9402754807664788, -0.2768390860596226)
第2次迭代后,坐标为(0.7522203846131831, 0.22147126884769808)
第3次迭代后,坐标为(0.6017763076905465, -0.17717701507815847)
第4次迭代后,坐标为(0.4814210461524372, 0.14174161206252678)
第5次迭代后,坐标为(0.3851368369219498, -0.11339328965002143)
第6次迭代后,坐标为(0.3081094695375598, 0.09071463172001715)
第7次迭代后,坐标为(0.24648757563004783, -0.07257170537601373)
第8次迭代后,坐标为(0.19719006050403826, 0.05805736430081099)
第9次迭代后,坐标为(0.1577520484032306, -0.0464458914406488)
第10次迭代后,坐标为(0.12620163872258447, 0.03715671315251905)
<Figure size 1440x1440 with 0 Axes>

In [4]:
xixi.draw_momentum(num_ite)
xixi.draw_common("Optimize x1^2+x2^2*{} Using SGD With Momentum".format(RATIO ** 2))
xixi.show()


第1次迭代后,坐标为(0.9402754807664788, -0.2768390860596226)
第2次迭代后,坐标为(0.7310641862959373, 0.1654113539206245)
第3次迭代后,坐标为(0.566022332534401, -0.09252654353827738)
第4次迭代后,坐标为(0.4379640991889826, 0.05080682405932074)
第5次迭代后,坐标为(0.3388460383500984, -0.02774545616367277)
第6次迭代后,坐标为(0.26215620520457916, 0.015126659710868802)
第7次迭代后,坐标为(0.20282287918056657, -0.008242837339986299)
第8次迭代后,坐标为(0.15691830400229212, 0.004491015137412079)
第9次迭代后,坐标为(0.12140323143578899, -0.002446765386963811)
第10次迭代后,坐标为(0.09392622861764591, 0.0013330120623772186)
<Figure size 1440x1440 with 0 Axes>

In [5]:
xixi.draw_rmsprop(num_ite)
xixi.draw_common("Optimize x1^2+x2^2*{} Using RMSProp".format(RATIO ** 2))
xixi.show()


第1次迭代后,坐标为(0.17534435138350624, -0.6539511422649288)
第2次迭代后,坐标为(0.027064750831587076, 0.2308948770669521)
第3次迭代后,坐标为(0.004068279707573737, -0.06867699867061983)
第4次迭代后,坐标为(0.0005941362286905109, 0.02051911465056415)
第5次迭代后,坐标为(8.421237600053373e-05, -0.0062552961273812414)
第6次迭代后,坐标为(1.1572078419868503e-05, 0.0019477842771197015)
<Figure size 1440x1440 with 0 Axes>

In [6]:
xixi.draw_adam(num_ite)
xixi.draw_common("Optimize x1^2+x2^2*{} Using AdaM".format(RATIO ** 2))
xixi.show()


第1次迭代后,坐标为(1.0753443509623526, 0.2460488575761336)
第2次迭代后,坐标为(0.9756543096620457, 0.14824101025093878)
第3次迭代后,坐标为(0.8765280947321862, 0.05564529669894186)
第4次迭代后,坐标为(0.778261303856573, -0.026962009710814624)
第5次迭代后,坐标为(0.6811964771683848, -0.09354905126219205)
第6次迭代后,坐标为(0.5857279923637426, -0.13918909740494478)
第7次迭代后,坐标为(0.49230599600105795, -0.1626450408853121)
第8次迭代后,坐标为(0.401438445191169, -0.16627272698407433)
第9次迭代后,坐标为(0.31369004392371225, -0.15404339701193012)
第10次迭代后,坐标为(0.2296766372258155, -0.13005767862861917)
<Figure size 1440x1440 with 0 Axes>

In [7]:
def adagrad(eta):
    xixi.eta = eta
    xixi.draw_adagrad(num_ite)
    xixi.draw_common("Optimize x1^2+x2^2*{} Using AdaGrad with eta={}".format(RATIO ** 2, eta))
    xixi.show()

adagrad(1e-1)
adagrad(1)
adagrad(10)
adagrad(100)


第1次迭代后,坐标为(1.0753443509590035, 0.24604885757465705)
第2次迭代后,坐标为(1.0078420033334219, 0.18810122314807176)
第3次迭代后,坐标为(0.9543779938713571, 0.1475975122082431)
第4次迭代后,坐标为(0.9092090735471152, 0.1173083963302239)
第5次迭代后,坐标为(0.869682143767047, 0.09390367140097364)
第6次迭代后,坐标为(0.8343169099162272, 0.07548892491141282)
第7次迭代后,坐标为(0.8021885059123975, 0.06084494521325132)
第8次迭代后,坐标为(0.7726734971839189, 0.049123098047684714)
第9次迭代后,坐标为(0.7453280152918971, 0.03970157352400549)
第10次迭代后,坐标为(0.7198226990754721, 0.03210902201536169)
<Figure size 1440x1440 with 0 Axes>
第1次迭代后,坐标为(0.17534435096714718, -0.6539511424241831)
第2次迭代后,坐标为(0.027791789555935392, 0.22992650117260482)
第3次迭代后,坐标为(0.004411345692965647, -0.06684103894895799)
第4次迭代后,坐标为(0.0007002313047123642, 0.01911182297118201)
第5次迭代后,坐标为(0.00011115073837118317, -0.005457214693669082)
第6次迭代后,坐标为(1.764343702369293e-05, 0.0015580875207949676)
<Figure size 1440x1440 with 0 Axes>
第1次迭代后,坐标为(-8.824655648951415, -9.653951142412584)
第2次迭代后,坐标为(1.0878110844628583, 0.33963061123171556)
第3次迭代后,坐标为(-0.12507300502043117, -0.01173127883785191)
第4次迭代后,坐标为(0.014366932173184355, 0.00040520454558823707)
第5次迭代后,坐标为(-0.0016502855292942625, -1.3995977907764847e-05)
<Figure size 1440x1440 with 0 Axes>
第1次迭代后,坐标为(-98.82465564813704, -99.6539511422966)
第2次迭代后,坐标为(1.168272656175418, 0.3454459485585204)
第3次迭代后,坐标为(-0.013728357154607407, -0.0011953902312535902)
第4次迭代后,坐标为(0.00016132161669681067, 4.136559658980037e-06)
<Figure size 1440x1440 with 0 Axes>

In [8]:
def adadelta(epsilon):
    xixi.epsilon = epsilon
    xixi.draw_adadelta(num_ite)
    xixi.draw_common("Optimize x1^2+x2^2*{} Using Adadelta with epsilon={}".format(RATIO ** 2, epsilon))
    xixi.show()

adadelta(1e-2)
adadelta(1e-1)


第1次迭代后,坐标为(0.861939731914189, 0.03022782664134538)
第2次迭代后,坐标为(0.591343124329973, -0.010692111155378207)
第3次迭代后,坐标为(0.3856499599733684, 0.004233538253528325)
第4次迭代后,坐标为(0.24279780262905024, -0.0018473840731201476)
第5次迭代后,坐标为(0.14923858572637988, 0.0008854169044693904)
第6次迭代后,坐标为(0.0901130162328327, -0.00046519696328413797)
第7次迭代后,坐标为(0.053586713471351376, 0.0002674840858462085)
第8次迭代后,坐标为(0.03139646071643488, -0.0001680508981026498)
第9次迭代后,坐标为(0.018112734359400265, 0.00011518548269503419)
第10次迭代后,坐标为(0.010276601068083065, -8.600422716250385e-05)
<Figure size 1440x1440 with 0 Axes>
第1次迭代后,坐标为(0.2551483869348431, -0.6413080698107142)
第2次迭代后,坐标为(-0.02260529725056437, 0.6059146469985833)
第3次迭代后,坐标为(0.00304867896660024, -0.620925282078267)
第4次迭代后,坐标为(-0.00048063277469148017, 0.6394305856554717)
第5次迭代后,坐标为(8.712216852106074e-05, -0.658776560702511)
第6次迭代后,坐标为(-1.7935523312355957e-05, 0.6782569382585094)
第7次迭代后,坐标为(4.150191928619918e-06, -0.6976028705153178)
第8次迭代后,坐标为(-1.0698104808964736e-06, 0.7166927727209761)
第9次迭代后,坐标为(3.0480054026420956e-07, -0.7354673082587792)
第10次迭代后,坐标为(-9.531175236490854e-08, 0.7538976984275011)
<Figure size 1440x1440 with 0 Axes>

In [9]:
adadelta(1e-2)
adadelta(1e-3)


第1次迭代后,坐标为(0.861939731914189, 0.03022782664134538)
第2次迭代后,坐标为(0.591343124329973, -0.010692111155378207)
第3次迭代后,坐标为(0.3856499599733684, 0.004233538253528325)
第4次迭代后,坐标为(0.24279780262905024, -0.0018473840731201476)
第5次迭代后,坐标为(0.14923858572637988, 0.0008854169044693904)
第6次迭代后,坐标为(0.0901130162328327, -0.00046519696328413797)
第7次迭代后,坐标为(0.053586713471351376, 0.0002674840858462085)
第8次迭代后,坐标为(0.03139646071643488, -0.0001680508981026498)
第9次迭代后,坐标为(0.018112734359400265, 0.00011518548269503419)
第10次迭代后,坐标为(0.010276601068083065, -8.600422716250385e-05)
<Figure size 1440x1440 with 0 Axes>
第1次迭代后,坐标为(1.0754347139894274, 0.24606174203428643)
第2次迭代后,坐标为(0.9773537735070357, 0.16125666047163023)
第3次迭代后,坐标为(0.8837371410745232, 0.09931913878957918)
第4次迭代后,坐标为(0.7958121696949993, 0.058676463792299585)
第5次迭代后,坐标为(0.714127910855378, 0.033730701132438284)
第6次迭代后,坐标为(0.6388501156959325, 0.018999152533362387)
第7次迭代后,坐标为(0.5699118994831653, 0.010508466559970122)
第8次迭代后,坐标为(0.507101835630642, 0.005706323851443924)
第9次迭代后,坐标为(0.45011982370475706, 0.0030382068146188766)
第10次迭代后,坐标为(0.398614265543035, 0.001583084297230962)
<Figure size 1440x1440 with 0 Axes>

In [ ]: