LoginSignup
1
0

More than 3 years have passed since last update.

1【+】Four Arithmetic by Machine Learning

Last updated at Posted at 2019-06-09

english_a+b.png


深層学習の形式でたし算をする回路を考えてみました。\\
I\ had\ thought\ about\ a\ Perceptron\ that\ Addition\  in\  the\  form\  of\  deep\  learning.\\
\\
上記のように中間層無しで\\
Without\ the\ middle\ layer\ as\ above\\
重りを
\begin{pmatrix}
1\\
1
\end{pmatrix}
とすればたし算ができます。\\
It\ would\ be\ able\ to\ plus\ if\ weight\ is
\begin{pmatrix}
1\\
1
\end{pmatrix}
.\\
 \\
\begin{pmatrix}
a & b
\end{pmatrix}
\begin{pmatrix}
1\\
1
\end{pmatrix}
=a+b\\
 \\
重りの初期値を乱数で決めてから学習を繰り返すと\\
重りが
\begin{pmatrix}
1\\
1
\end{pmatrix}
になるのか試してみました。\\
I\ tried\ whether\ weight\ would\ become\
\begin{pmatrix}
1\\
1
\end{pmatrix}\\
if\ the\ initial\ value\ of\ the\ weight\ was\ determined\ by\ random\ numbers\ and\ then\ repeated\ learning.


        string path = @"D:\開発\AI\" + DateTime.Now.ToString("yyyyMMdd") + "和.csv";
        double[] w = new double[2];

        private void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            sw.Start();
            Thread th = new Thread(nnw);
            th.Start();
        }

        private void nnw()
        {
            using (StreamWriter sw = new StreamWriter(path, true, Encoding.Unicode))
            {//row index
                sw.Write(
                    "a,b,a+b," +
                    "w[0],w[1]," +
                    "Y,ΔE" +
                    Environment.NewLine);
            }

            // get random number 0.0 ~ 1.0
            Random cRandom = new Random();
            for (int n = 0; n < w.Length; n++)
            {
                w[n] = cRandom.NextDouble();
            }

            //learning
            for (int p = 0; p < 100; p++)
            {
                //input data
                double a = cRandom.NextDouble();
                double b = cRandom.NextDouble();

                double a_add_b = a + b;

                //forward propagation
                double Y = a * w[0] + b * w[1];

                //least squares error
                double dE = Y - a_add_b;//value after differentiation of squared error because calculation is omitted

                //record
                using (StreamWriter sw = new StreamWriter(path, true, Encoding.Unicode))
                {
                    sw.Write(
                        a.ToString() + "," + b.ToString() + "," + a_add_b.ToString() + "," +
                        w[0].ToString() + "," + w[1].ToString() + "," +
                        Y.ToString() + "," + dE.ToString() +
                        Environment.NewLine);
                }

                //back propagation
                w[0] = w[0] - (a * dE);
                w[1] = w[1] - (b * dE);
            }

            //final record
            using (StreamWriter sw = new StreamWriter(path, true, Encoding.Unicode))
            {
                sw.Write(
                    ",,," +
                    w[0].ToString() + "," + w[1].ToString() + "," +
                    "," +
                    Environment.NewLine);
            }

            //read only
            File.SetAttributes(path, FileAttributes.ReadOnly);

            Invoke(new dldl(delegate
            {
                sw.Stop();
                label2.Text = sw.Elapsed.ToString();
                button1.Enabled = true;
            }));
        }

        Stopwatch sw = new Stopwatch();
        private delegate void dldl();


乱数で重みの初期値が
\begin{pmatrix}
0.650900189136574\\
0.343834649931562
\end{pmatrix}
と決定され\\
100回学習させてみましたが最終的には
\begin{pmatrix}
1.00000071817137\\
0.999999714540082
\end{pmatrix}
と\\
見事、徐々に
\begin{pmatrix}
1\\
1
\end{pmatrix}
の近似値にまで重みが修正されました。\\
The\ initial\ value\ of\ the\ weight\ was\ determined\ to\ be
\begin{pmatrix}
0.650900189136574\\
0.343834649931562
\end{pmatrix}
by\ random\ numbers\\
and\ I\ tried\ to\ make\ it\ learn\ 100\ times\\
finally\ the\ weight\ was\ corrected\ to\\
\begin{pmatrix}
1.00000071817137\\
0.999999714540082
\end{pmatrix}
gradually,\ to\ an\ approximation\ of
\begin{pmatrix}
1\\
1
\end{pmatrix}
.\\
重みの推移グラフを掲載します。\\
I\ will\ post\ the\ transition\ graph\ of\ the\ weight.


和重み.png

a b a+b w[0] w[1] Y ΔE
1 0.683191321177032 0.481515911631992 1.16470723280902 0.650900189136574 0.343834649931562 0.610251215083059 -0.554456017725965
2 0.059863644679945 0.405779822918484 0.465643467598429 1.02969972842133 0.610814044766724 0.309497593590815 -0.156145874007614
3 0.628775622057158 0.439168247133106 1.06794386919026 1.03904718954116 0.674174889870986 0.949403747596282 -0.118540121593982
4 0.723503041418038 0.812763529742492 1.53626657116053 1.11358232823515 0.72623394728636 1.3959366677628 -0.140329903397734
5 0.94756354715096 0.914543969982557 1.86210751713352 1.21511144014531 0.840288974900325 1.91987652144572 0.057769004312201
6 0.493606372966248 0.604670146296113 1.09827651926236 1.16037163750386 0.787456680354705 1.04891838139312 -0.049358137869243
7 0.190439433879424 0.919450586158526 1.10989002003795 1.18473512891387 0.817302072801004 0.977089157152884 -0.132800862885066
8 0.445464146530937 0.296863115065202 0.742327261596139 1.2100256500604 0.939405904023036 0.817898006463618 0.075570744867479
9 0.21897144672413 0.497346186776341 0.716317633500471 1.1763615926953 0.916971737293878 0.713641996747978 -0.002675636752493
10 0.990401521786303 0.491479034298788 1.48188055608509 1.1769474807459 0.918302455029929 1.61697697978561 0.13509642370052
11 0.474847008229628 0.467522951526345 0.942369959755973 1.04314777712502 0.851905395172378 0.893620925881409 -0.048749033874564
12 0.070774346157338 0.952326489124599 1.02310083528194 1.06629611001444 0.874696687373472 0.90846323533168 -0.114637599950257
13 0.959042876474114 0.257870299861706 1.21691317633582 1.07440951119597 0.98386911045577 1.28411541066642 0.067202234330605
14 0.489296777401723 0.865342737578481 1.3546395149802 1.00995968707805 0.96653965013756 1.33055808702113 -0.024081427959075
15 0.564851948788786 0.30704285824068 0.871894807029467 1.02174265217366 0.987378338932466 0.880300795591676 0.008405988562209
16 0.368937836666097 0.38892472739747 0.757862564063567 1.0169945131528 0.984797340177987 0.758219792654362 0.000357228590795
17 0.068729318244722 0.443619993721889 0.512349311966612 1.01686271800932 0.984658405145693 0.506702436866194 -0.005646875100418
18 0.629254897418085 0.363545642403674 0.992800539821759 1.01725082388518 0.987163471842289 0.99898904136068 0.006188501538921
19 0.34703746593885 0.383850896444102 0.730888362382952 1.01335667898414 0.984913669074806 0.729732728761278 -0.001155633621674
20 0.075143174303297 0.413087185198947 0.488230359502244 1.01375772714776 0.985357260076446 0.483215430572704 -0.00501492892954
21 0.518711826074269 0.120073279887472 0.638785105961741 1.01413456482643 0.987428862951923 0.644607414236345 0.005822308274605
22 0.105407021523177 0.883874247727857 0.989281269251034 1.01111446466934 0.986729759300875 0.978723587852547 -0.010557681398487
23 0.465303556278955 0.176727782551538 0.642031338830493 1.01222731841975 0.996061422004713 0.647024697419443 0.00499335858895
24 0.968339733764687 0.421823305274278 1.39016303903897 1.00990389091053 0.995178956813803 1.39771974175483 0.007556702715868
25 0.78485160450677 0.281333837323512 1.06618544183028 1.00258643541451 0.991991363497221 1.06596230937626 -0.000223132454025
26 0.029223583186615 0.935654411528099 0.964877994714714 1.00276156127907 0.992054138206743 0.957524116790224 -0.00735387792449
27 0.327340567636928 0.159421154837786 0.486761722474714 1.00297646794234 0.998934826528631 0.487566229995604 0.00080450752089
28 0.868987641701935 0.215668369650686 1.08465601135262 1.00271311999378 0.998806571010575 1.08675629421323 0.002100282860609
29 0.410741565474654 0.107537155555346 0.51827872103 1.00088800014384 0.998353606430222 0.518466411117802 0.000187690087802
30 0.44673694644437 0.370905322195452 0.817642268639823 1.00081090802335 0.998333422772054 0.817386388850325 -0.000255879789497
31 0.949871469731383 0.858160303839557 1.80803177357094 1.00092521897916 0.998428329947821 1.80756186783299 -0.000469905737951
32 0.247911580953706 0.64052068891028 0.888432269863985 1.00137156903311 0.998831584398677 0.888023903345478 -0.000408366518508
33 0.54560613331646 0.104681645568778 0.650287778885238 1.00147280782232 0.99909315160244 0.650996421483754 0.000708642598516
34 0.535940828051391 0.746819440157534 1.28276026820893 1.00108616807424 0.999018969729107 1.28260973754835 -0.000150530660575
35 0.290195688740441 0.081918504127263 0.372114192867705 1.00116684360112 0.999131388952764 0.372381650532525 0.00026745766482
36 0.949825649126352 0.835120550280027 1.78494619940638 1.00108922853986 0.999109479220945 1.78523708440826 0.000290885001883
37 0.422203012473044 0.577314336587356 0.9995173490604 1.00081293850413 0.998866555178104 0.999206220200388 -0.000311128860012
38 0.97276720822452 0.354773728342156 1.32754093656668 1.00094429804609 0.999046174329515 1.3281211264514 0.000580189884725
39 0.362115930003168 0.186900098429481 0.549016028432649 1.00037990835169 0.998840338200965 0.548936858394353 -7.91700382960503E-05
40 0.487022932845644 0.782315093922575 1.26933802676822 1.00040857708374 0.998855135088915 1.26864136807739 -0.000696658690829
41 0.289530566097019 0.067473472127446 0.357004038224464 1.00074786584254 0.999400141698063 0.357180093722802 0.000176055498338
42 0.080491133071711 0.283518111465274 0.364009244536985 1.00069689239444 0.999388262622303 0.363891899569405 -0.00011734496758
43 0.277819275054065 0.433283425137998 0.711102700192063 1.00070633762384 0.999421532045901 0.711048293822177 -5.44063698860731E-05
44 0.061584159760542 0.909308163406937 0.970892323167479 1.00072145276208 0.999445105424195 0.970432183062029 -0.00046014010545
45 0.574632352019955 0.413586527767399 0.988218879787353 1.00074979010385 0.999863514578392 0.988593284906633 0.00037440511928
46 0.95280407692902 0.239500310383504 1.19230438731252 1.00053464480955 0.99970866566513 1.19274402440314 0.000439637090617
47 0.937113949999732 0.704237852107844 1.64135180210758 1.00011575679724 0.999603372445472 1.64118095927999 -0.00017084282759
48 0.463215715467565 0.660551522234712 1.12376723770228 1.00027585599423 0.999723686431422 1.12371249918567 -5.47385166058678E-05
49 0.872161698933766 0.464886332612897 1.33704803154666 1.00030121173536 0.999759844041891 1.33719909166289 0.000151060116231
50 0.338268114411397 0.360621910710177 0.698890025121574 1.00016946288775 0.999689618258452 0.698835418556389 -5.46065651854111E-05
51 0.640786954500148 0.221520293607153 0.862307248107301 1.00018793454759 0.999709310582326 0.862363280508543 5.60324012427449E-05
52 0.131627616533836 0.702933100379507 0.834560716913343 1.00015202971584 0.999696898268352 0.834367667982523 -0.000193048930819
53 0.33150818819716 0.194103032906588 0.525611221103748 1.00017744028648 0.999832598751817 0.525637550921648 2.63298178996285E-05
54 0.513451399055054 0.750026231049572 1.26347763010463 1.00016871173625 0.999827488054307 1.2634348668972 -4.27632074231354E-05
55 0.186653946613266 0.514213913359779 0.700867859973045 1.00019066856493 0.999859561581598 0.700831233624472 -3.66263485725993E-05
56 0.853552439647518 0.223841467045174 1.07739390669269 1.00019750501744 0.99987839535963 1.07753526742107 0.000141360728381
57 0.620514222709701 0.664421852521795 1.2849360752315 1.00007684622286 0.999846752966806 1.28488193872806 -5.41365034398833E-05
58 0.081374756098434 0.882397997603937 0.963772753702371 1.00011043869322 0.999882722442711 0.963678255142379 -9.44985599916626E-05
59 0.777669170767846 0.964393469488431 1.74206264025628 1.00011812849049 0.999966107782824 1.74212181970861 5.9179452329694E-05
60 0.362701413856215 0.112322708178462 0.475024122034676 1.00007210645487 0.999909035505469 0.475040057769431 1.59357347545019E-05
61 0.043097485808235 0.626632664644454 0.669730150452689 1.00006632654134 0.999907245560585 0.669674885998335 -5.52644543542202E-05
62 0.17218708813758 0.876609160973043 1.04879624911062 1.00006870830038 0.999941876072877 1.04875712782581 -3.91212848147582E-05
63 0.129114427198244 0.710325338742847 0.839439765941091 1.00007544448049 0.999976170149535 0.839432579965371 -7.18597571969237E-06
64 0.898006600280295 0.7179651603652 1.6159717606455 1.00007637229363 0.999981274530172 1.61602689923431 5.51385888130085E-05
65 0.114098621119791 0.312215685989808 0.426314307109599 1.00002685747695 0.999941686944413 0.426299165260033 -1.51418495657474E-05
66 0.48261202940839 0.897229597390271 1.37984162679866 1.00002858514111 0.999946414467362 1.37980734380575 -3.42829929149691E-05
67 0.848631984018084 0.126401022135467 0.97503300615355 1.00004513052589 0.999977174183292 0.975068420154714 3.54140011632476E-05
68 0.141528139422428 0.068010272489865 0.209538411912293 1.00001507707182 0.999972697817348 0.209538688913334 2.77001041049108E-07
69 0.93584585559361 0.377558032692204 1.31340388828581 1.00001503786838 0.999972678978431 1.31340764614146 3.7578556448814E-06
70 0.952009923268114 0.083716242147478 1.03572616541559 1.00001152109475 0.999971260169847 1.03573472762154 8.56220594669388E-06
71 0.919832026082944 0.31155792871097 1.23138995479391 1.00000336978972 0.99997054337414 1.23138387698908 -6.07780483252718E-06
72 0.72265421679367 0.060418438660176 0.783072655453846 1.00000896034926 0.999972436962425 0.783077465372324 4.80991847806589E-06
73 0.56003408811988 0.728962609883846 1.28899669800373 1.00000548444138 0.999972146354661 1.28897946521185 -1.7232791871713E-05
74 0.618986087673803 0.272692097477937 0.89167818515174 1.00001513539227 0.999984708415599 0.89168338385476 5.19870301995962E-06
75 0.62286309600941 0.580817717863628 1.20368081387304 1.00001191746742 0.999983290770368 1.20367853180707 -2.28206596641911E-06
76 0.882882351466865 0.907768229445335 1.7906505809122 1.0000133388821 0.999984616234715 1.79064839268242 -2.18822978403921E-06
77 0.102184918756683 0.225945406232935 0.328130324989618 1.00001527083155 0.999986602640192 0.328128858366395 -1.4666232227567E-06
78 0.317524424901942 0.014154289855694 0.331678714757636 1.00001542069833 0.999986934016972 0.331683426266293 4.71150865710701E-06
79 0.049333205469574 0.255018455560793 0.304351661030367 1.00001392467925 0.999986867328912 0.304348998905931 -2.66212443555958E-06
80 0.573818673181263 0.621182849454313 1.19500152263558 1.00001405601038 0.999987546219774 1.19500185216212 3.29526541165137E-07
81 0.296096432626292 0.795486238689854 1.09158267131615 1.0000138669219 0.999987341523539 1.09157670761842 -5.96369772165595E-06
82 0.635927609929781 0.874438260623458 1.51036587055324 1.00001563275152 0.999992085563008 1.51036889116503 3.02061179402457E-06
83 0.031601883951389 0.956322842257248 0.987924726208637 1.00001371186108 0.999989444224485 0.987915064800037 -9.6614086003699E-06
84 0.37520948302709 0.494113200574235 0.869322683601325 1.0000140171798 0.999998683650218 0.869327292554305 4.60895298048936E-06
85 0.522893713099367 0.013364483608568 0.536258196707935 1.00001228785693 0.999996406305709 0.536264573923203 6.37721526797197E-06
86 0.946552142010327 0.400111138075642 1.34666328008597 1.00000895325116 0.99999632107752 1.34667028282717 7.0027412031326E-06
87 0.012383546220317 0.278985171708737 0.291368717929054 1.00000232479147 0.999993519202768 0.291366938671888 -1.77925716599026E-06
88 0.192490682095518 0.731539557097265 0.924030239192783 1.00000234682499 0.999994015589134 0.924026313101451 -3.92609133215149E-06
89 0.903978447850784 0.111768649477404 1.01574709732819 1.00000310256099 0.999996887680248 1.01574955411668 2.45678848886932E-06
90 0.316575072853162 0.400151817314397 0.71672689016756 1.00000088167714 0.999996613088317 0.7167258140057 -1.07616185995862E-06
91 0.091339251069044 0.625314502802358 0.716653753871403 1.00000122236316 0.99999704371644 0.716652016914154 -1.73695724858813E-06
92 0.09510206435579 0.533280903256163 0.628382967611953 1.00000138101553 0.999998129860999 0.628382101639966 -8.65971987562553E-07
93 0.429333334522943 0.574843799963055 1.004177134486 1.00000146337126 0.999998591667323 1.00417695318875 -1.81297245882561E-07
94 0.795044678633588 0.622686577785149 1.41773125641874 1.00000154120821 0.99999869588492 1.41773166969317 4.13274429345023E-07
95 0.808876597233525 0.127373849566734 0.936250446800259 1.00000121263657 0.99999843854448 0.936251228785004 7.81984744624431E-07
96 0.018677067020292 0.680827400032816 0.699504467053108 1.00000058010741 0.999998338940073 0.699503346992702 -1.12006040631218E-06
97 0.803739359510941 0.330827073813801 1.13456643332474 1.00000060102686 0.999999101507887 1.13456661914817 1.85823425091769E-07
98 0.787619809521185 0.12434578739309 0.911965596914275 1.00000045167326 0.999999040032467 0.911965833293161 2.36378885687394E-07
99 0.675630318781189 0.848215956170213 1.5238462749514 1.00000026549656 0.999999010639749 1.52384561513778 -6.59813623737904E-07
100 0.028816554708787 0.603711245862633 0.632527800571419 1.00000071128665 0.999999570304192 0.632527561656059 -2.38915360606384E-07
1.00000071817137 0.999999714540082

生まれて初めて機械学習を成し遂げることができました。
I was able to achieve machine learning for the first time in my life.
私のような天才秀才でなくとも機械学習が可能で
Machine learning is possible without being a genius like me,
しかも、高額なグラボを何個も並列にしなくとも無料で実現することができました。
In addition, it was possible to realize free of charge without having to run expensive graphic board in parallel.

NEXT【-】

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0