-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathintro2ml_jegyzet.tex
1989 lines (1686 loc) · 97 KB
/
intro2ml_jegyzet.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
\documentclass[a4paper, 11pt]{article}
\usepackage[hungarian]{babel}
\usepackage{t1enc}
\usepackage[margin=2cm]{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{enumerate}
\usepackage[hidelinks]{hyperref}
\usepackage{tcolorbox}
\usepackage{stuki}
\usepackage{stukicommands}
\usepackage{tikz}
\usepackage{forest}
\usepackage{parskip}
\usepackage{array}
\usepackage{makecell}
\renewcommand\theadalign{bc}
\renewcommand\theadfont{\bfseries}
\renewcommand\theadgape{\Gape[4pt]}
\renewcommand\cellgape{\Gape[4pt]}
\newcommand\norm[1]{\left\Vert#1\right\Vert}
\newtheorem{theorem}{tétel}
\title{\textbf{Bevezetés a gépi tanulásba}}
\author{\textsc{Dr. Botzheim János}, \textsc{Gulyás László} és \textsc{Nagy Balázs} \\ magyar nyelvű előadásai alapján}
\date{\textit{Utolsó frissítés: \today}}
\begin{document}
\maketitle
\section*{Előszó}
Ez a jegyzet a 2023/2024/2. tavaszi félévben készült, mely a \textit{Bevezetés a gépi tanulásba} című tárgy \textbf{magyar nyelvű} előadásait dolgozza fel. Elsődleges forrásaim a levetített prezentációk voltak, valamint azon magyarázatok, melyek elhangoztak.
A jegyzet \textit{a szó szoros értelmében jegyzet}nek minősül, azaz a magyarázatok messze nem olyan precízek, mint amilyeneket egy hivatalos egyetemi jegyzet megkövetelne, valamint a szerkezete is inkább vázlatpontokban foglaja össze tömören a lényeget. Emiatt \textbf{semmiképp sem helyettesíti az előadás anyagait}, legfeljebb egy áttekinthetőbb összefoglalást biztosít.
Igyekeztem a legjobb tudásom szerint összeállítani a jegyzetet, ennek ellenére előfordulhatnak benne elgépelések, hibák, stb. Ha találsz ilyet, kérlek értesíts e-mailben a(z) \href{mailto:ap3558@inf.elte.hu}{ap3558@inf.elte.hu} címen.
Sikeres felkészülést kívánok!
%\textit{\today}
\begin{flushright}
\textit{Kiss-Bartha Nimród}
\end{flushright}
\subsubsection*{Rövidítések}
\begin{itemize}
\item \textbf{GT} -- gépi tanulás $\Longleftrightarrow$ ML -- machine learning
\item \textbf{MI} -- mesterséges intelligencia $\Longleftrightarrow$ AI -- artificial intelligence
\item \textbf{RL} -- megerősített tanulás (\textit{reinforcement learning})
\end{itemize}
\subsubsection*{Források}
\begin{enumerate}[{[}1.{]}]
\item Az előadás prezentációi (\textit{Canvason elérhetők})
\item Valentinusz (Boda Bálint és mások) jegyzete (\textit{angol nyelvű}) [\href{https://github.com/Valentinusz/elte-ik-bsc/tree/main/5/ml/exam}{\texttt{link}}]
\item BME-s jegyzet (\textit{magyar nyelvű}) [\href{http://mnbprogram.bme.hu/wp-content/uploads/2021/10/1_2_3_Tanulmany_MelyMegerositesesTanulasAck.pdf}{\texttt{pdf}}]
\end{enumerate}
%\pagebreak
\tableofcontents
\newpage
\section{Mesterséges intelligencia vs. gépi tanulás -- Bevezető}
\subsection{Mi az a gépi tanulás?}
\begin{itemize}
\item fogalmak tisztázása: $\boxed{\text{gépi tanulás (GT)} \neq \text{mesterséges intelligencia (AI)}}$
\item a két fogalom kapcsolódik egymáshoz, de nem ugyanarra vonatkoznak
\begin{itemize}
\item az MI sokkal régebbre nyúlik vissza (`50-es évek)
\item a GT frissebb, az MI-ből alakult ki
\item (mondhatnánk, hogy $\text{GT} \subset \text{AI}$)
\item viszont mégis összekapcsolódnak, ugyanis jelenleg a \textbf{mély gépi tanulás} (\textit{deep machine learning}) uralja az MI-t
\end{itemize}
\end{itemize}
\subsection{Mióta létezik?}
\begin{itemize}
\item 1956 óta vannak ilyen célú kutatások
\begin{itemize}
\item Dartmouth konferencia, ahol megjelentek az MI alapítói
\item azt kutaták, hogyan lehet mesterséges intelligenciát csinálni
\item másik szempontjuk, hogy hogyan lehet eladni
\item elnevezés: \textbf{mesterséges intelligencia} $\to$ marketing húzás (támogatók, szponzorok figyelmét felkeltsék vele)
\end{itemize}
\item csak az elmúlt években robbant be a kutatási terület
\begin{itemize}
\item a kutatások folyamatosak voltak '56 óta
\item csak az elért \textbf{eredményekről nem gondoljuk, hogy intelligensek}
\item a támogatás ``hullámzó'' volt (erről később)
\end{itemize}
\item felmutatható \textbf{eredmények}
\begin{itemize}
\item GPS, navigáció $\leftarrow$ gráfkereső algoritmusok (BFS, DFS)
\item nyelvhelyesség-ellenőrző Wordben
\item postákon OCR (optikai karakterfelismerő) rendszerekkel szortírozzák a csomagokat már a '80-as évek óta (!)
\item szövegkikövetkeztető (text prediction)
\end{itemize}
\end{itemize}
\subsection{Mik a hátráltató tényezők?}
\begin{itemize}
\item mi az az \textbf{intelligencia}? $\to$ nincs univerzálisan elfogadott definíció
\begin{itemize}
\item olyan tulajdonság, amivel az ember rendelkezik\dots és mások?
\item egyetlen példából nehéz általánosítani
\item eddigi ``legjobb'' megfogalmazás: egy olyan \textbf{gép}, hogy $\boxed{\text{gép} + \text{digitalizáció} = \text{MI}}$
\end{itemize}
\item ezt a gépet az ember alkotja meg, hogy az \textit{jobbá} váljon az embernél (jobban teljesítsen feladatokat nála)
\begin{itemize}
\item mit jelent, hogy \textit{jobban teljesítsen}?
\item pontosabban? gyorsabban? olcsóbban?
\item ilyen értelemben a varrógép is mesterséges intelligencia\dots ez kicsit kiábrándító
\end{itemize}
\item a legtöbbször úgy épülnek be az életünkbe ezek az ``intelligens'' dolgok, hogy fel sem tűnik a létük
\begin{itemize}
\item mintha egy közmű lenne
\item pl. az elektromosság megjelenésekor mindenki démonizálta az új technológiát, 100 évvel később anapság akkor pánikolunk, amikor nincs áram
\item hasonló érzelmek / gondolatok forognak az MI körül is
\end{itemize}
\end{itemize}
\subsection{Az MI értelmezése}
\begin{enumerate}[A)]
\item \underline{Szűk MI (\textit{narrow AI})}:
\begin{itemize}
\item jelenlegi korunk
\item adott feladatot (feladatcsoportot) jobban csinál, mint az ember
\item ekkor a szűk értelmezésben intelligensnek nevezhetők
\end{itemize}
\item \underline{Általános MI (\textit{AGI -- artificial general intelligence})}
\begin{itemize}
\item felülmúlja az emberi intelligenciát
%\item hasonlóan általános, mint az ember
\item minden feladatot képes elvégezni
\end{itemize}
\item Egyéb elméleti koncepciók:
\begin{itemize}
\item szingularitás: fel sem tudjuk fogni a fejlődés mértékét (irodalmi művekből ered a fogalom)
\item szuperintelligencia
\item öntudatra ébredés ($\to$ mi az az \textit{öntudat}?)
\end{itemize}
\end{enumerate}
A \textbf{vita} arról szól, hogy \textit{még nem} vagy \textit{már} eljutottunk-e az AGI-ba? Ennek eldöntésére \textbf{tesztek}et állítottunk elő.%\footnote{A Wikipédián lehet találni még jó pár tesztet részletesebb leírással.}
\begin{enumerate}
\item \underline{Turing-teszt}:
\begin{itemize}
\item ha lehet vele beszélgetni egy interfésze keresztül úgy, hogy 30 perc eltelte után nem tudjuk eldönteni, hogy ember-e vagy gép $\to$ a gép intelligens
\item eredmény: elértük
\item ChatGPT átmenne a teszten (szigorú értelemben nem, mert ha megkérdezzük tőle, hogy ő ember-e vagy gép, (egyelőre) gépet fog mondani)
\end{itemize}
%\newpage
\item \underline{Robot hallgató-teszt}:
\begin{itemize}
\item (mármint egyetemi diák)
\item beíratjuk egy egyetemre; ha lediplomázik, mint egy hallgató $\to$ a gép intelligens
\item eredmény: egyesek átmentek rajta
\end{itemize}
\item Employment test
\begin{itemize}
\item állást kereső robot; ha felveszik $\to$intelligens
\item nehéz tesztelni
\end{itemize}
\item Egyéb tesztek:
\begin{itemize}
\item IKEA-teszt: ha össze tud rakni egy IKEA-s bútort, akkor intelligens
\item Kávé-teszt: ha tud készíteni kávét, akkor intelligens
\begin{itemize}
\item a trükk a feladatban megvúvó komplexitás
\item sok a be nem számítható változó (polc magassága, hol találja a kávét, ismeri-e a kotyogós használatát, stb.)
\item nem sikerült elérni semminem / senkinek
\end{itemize}
\end{itemize}
\end{enumerate}
Praktikus dolgokban alulmaradnak, az ember jobb bennük.
\subsection{Az MI történelme}
\begin{itemize}
\item hullámokban érkeztek / érkeznek a fejlődések
\item megoszlanak a nézetek, hány hullám volt / van
\item kutatáspromócióra tökéletesen használható a terület ezen természete
\begin{center}
1956-ban megszületik az \textbf{MI}, mint fogalom
$\Downarrow$
hatalmas \textbf{támogatás}, érdeklődő hallgatók
$\downarrow$
de \textbf{nem} jelentek meg hasznosnak, \textit{intelligens}nek \\ minősülő eredmények $\to$ az \textit{első MI tél}
\end{center}
\item 5-10 évvel később: fiatalabb kutatók újabb ötletekkel érkeztek
\begin{itemize}
\item mantra: ``\textit{az első társaság rosszul csinálta, de mi tudjuk}''
\item ugyanúgy elbuktak
\end{itemize}
\item most úljabb felfele ívelés tapasztalható
\item a régebbi eredmények sosem tűntek el, csak nem MI-ként gontolunk rájuk (\textit{ld. korában})
\item utolsó hullám eleje:
\begin{itemize}
\item 2000-2001. -- felismerték, hogy hétköznapi tudásra, ``\textit{józan észt}'' igénylő feladatok megoldására, trivialitások felismerésére nem alkalmas
\item gondolat: ``\textit{ha meggondoljuk, a csecsemő és a gyerek is ezeket a trivialitásokat tanulja meg, amíg fel nem nő}''
\item projekt: Open Mind Common Sense
\begin{itemize}
\item az általános tudásunknak, a \textit{józan ész}nek az adatbázisa
\item ilyeneket tartalmazott, pl. \textit{az anyám anyja a nagyanyám}
\end{itemize}
\item minek összegyűjteni ezeket, ha ott az \textbf{internet}?
\begin{center}
$\Downarrow$ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ezt felhasználva kapjuk meg a \textbf{gépi tanulás}t $\to$ elérkeztünk napjainkig
\end{center}
\end{itemize}
\end{itemize}
\newpage
\section{Napjaink MI-je -- Optimalizáció}
Az előadás tételmondata: az MI-kutatás (legtöbb) feladata az \textbf{optimalizáció}ról szól.
\subsection{Mitől optimalizáció?}
\begin{itemize}
\item példa: $f^* = \arg\max\limits_{x\in X}f(x)$
\item feladat: keressük azt az modellt, aminek a paramétereit (\textbf{súlyait}, jele $w \in W$) \textbf{a legjobban állítom be}, a legjobban teljesít \\ általában minimumot keresünk
\item \fbox{jó = minimumtól való eltérés kicsi}
\item $\boxed{f^* = \arg\min\limits_{w \in W}^{} f(w, x)}$ (ahol $w$ a tanult paraméterek és $x$ a bemeneti példányok)
%\item súlyok helyes beállítása
\item valahol könnyebben látszik, valahol nehezebben látszik az optimalizáció (problémamegoldás) \\ pl. legrövidebb $A$-ból $B$-be vezető út (lehetséges jelentései: legrövidebb számú lépéssorozat, legrövidebb úthossz, legrövidebb idő)
\end{itemize}
\subsection{Intelligens viselkedés}
Tipikus feladatok, amiket ha képes megoldani, intelligensként tekintünk rá.
\begin{enumerate}[A)]
\item \underline{Tervezés}
\begin{itemize}
\item adott bizonyos lépések elvégzésének egy sorrendje $\to$ cél:
\begin{itemize}
\item hogy a legtöbbet gyártsuk
\item hogy a legnagyobb legyen a haszon
\end{itemize}
%\item felmerülő problémák -- példán keresztül: gyári termékgyártás üzemeltetése
%\begin{itemize}
%\item eltérő követelmények az eszközöket illetően
%\item eltérők a gyártandó termékek
%\item váratlan események
%\end{itemize}
\item ha nem triviálisan kicsi a feladat, nem várhatjuk el, hogy az MI jobban teljesítsen
\end{itemize}
\item \underline{Kép- / hang- / szövegfelismerés}
\begin{itemize}
\item pl. ismerje fel, hogy milyen betűt ábrázol a rajz
\item megadunk egy \textbf{veszteségfüggvény}t / \textbf{hibafüggvény}t $\to$ cél: az ettől való eltérés minimalizálása
\end{itemize}
\item \underline{Tanulás}
\begin{itemize}
\item kulcs: \textbf{fejlődés} (minden egyes iterációnál váljon jobbá a korábbi iterációhoz képest)
\item pl. \textit{darts célbadobása}: ha nagyon magasan van, vigye lejjebb, ha túl balra dob, jobbrább kell tolnom $\Longrightarrow$ \textbf{paraméterek finomhangolása}
\item találja el a célpontot $\to$ vizsgálja meg az eredményt $\to$ változtasson a paramétereken (váljon jobbá)
\item szintén, a célunk
\begin{itemize}
\item hiba minimalizálása
\item pontosság maximalizálása
\end{itemize}
\item feladat: határozzuk meg, hogy \textit{a hibafüggvény az adott helyen hogyan fog változni}
\begin{center}
$\Downarrow$
\textbf{gradiens}, \underline{\textbf{deriválás}}
\end{center}
\newpage
\item \textbf{gépi tanulás osztályai}
\begin{enumerate}[(a)]
\item \underline{Felügyelt tanulás} (\textit{supervised learning})
\begin{itemize}
\item tudjuk a jó választ
\item az MI eredményét összehasonlíthatjuk vele (jó-e vagy sem, mennyire jó, stb.)
\item \textit{előfeltétel}: álljon a rendelkezésünkre sok példa / adat, amik meg vannak címkézve (\textbf{címkézett adat}) $\to$ ez a súlyállítgatás miatt fontos
\end{itemize}
\item \underline{Felügyelet nélküli tanulás} (\textit{unsupervised learning})
\begin{itemize}
\item címke nélküli adatunk van
\item ``\textit{majd meglátjuk}'' alapon derül ki a képessége
\item pl. a '70-es évek óra így működtek a karakterfelismerő rendszerek $\to$ \textbf{klaszterezés}sel megállapítja, mennyire hasonlítanak
\item van, hogy mi adjuk meg, hány csoportba rendezze a bemeneteket (pl. számjegyek esetén 10-et), VAGY rábízzuk, hogy saját maga fedezze fel ezeket a csoportokat
\\ \textit{lehetséges probléma}: a 9-es és a 6-os számjegyet azonosnak veszi
\end{itemize}
\item \underline{Megerősítéses tanulás} (\textit{reinforcement learning})
\begin{itemize}
\item régi ötletről van szó
\item próbálja meghaladni a felügyeletet
\item nincs címke, és adat sem igazán $\to$ helyette \textbf{visszacsatolás} van
\item ha a visszacsatolás szerint helyes az eredmény, \textbf{jutalom}ban részesül (\textit{reward})
\item ``\textit{próba-szerencse}'' (\textit{trial and error}) alapjú
\item példa: $\alpha_0$ sakkjáték
\end{itemize}
\end{enumerate}
\item \textit{megjegyzés}: a tanulás \textbf{\textit{lassú folyamat}}
\begin{itemize}
\item felügyelt és megerősített tan.: sok számítás és futtatás
\item felügyeletlen tan.: valamivel kevesebb
\item ha meggondoljuk, az emberek is lassan tanulnak
\end{itemize}
\end{itemize}
\item \underline{Valami új generálása}
\begin{itemize}
\item a tanulás alkalmazása a szoftver generatív aspektusában (Dall-E, ChatGPT, stb.)
\item az alábbi gondolatok álnak mögötte
\begin{enumerate}[(a)]
\item \underline{Önkódoló rendszerek} (\textit{autoencoders})
\begin{itemize}
\item az alábbiakra van szükségünk:
\begin{itemize}
\item adott egy bemenet és egy kimenet: $\boxed{in, out \in \mathbb{R}^D}$
\item kódolós (\textit{encoding}): $\boxed{f : \mathbb{R}^D \to \mathbb{R}^d}$, ahol $d \ll D$ \footnote{Jelentése: sokkal kisebb a dimenzionalitása $d$-nek $D$-hez képest}
\item dekódolás (\textit{decoding}): $\boxed{g : \mathbb{R}^d \to \mathbb{R}^D}$
\item generatív kimenet (geverative output): $\boxed{g(y)}$, ahol $y \in \mathbb{R}^d$ tetszőleges (random)
\end{itemize}
\item \textit{az ötlet mögötte}: van egy óriási dimenzionalitású adatunk $\to$ a kódoló $f$ függvénnyel lecsökkentjük a dimenzionalitását $\to$ az így kapott eredményt dekódoljuk a $g$-vel, hogy a bemenetivel azonos dimenzionalitású eredményt kapjunk
\item \textit{cél}: úgy kódoljuk át a bemenetet, hogy az eredeti bemenet ``jellegzetességeit'' megőrizze
\item olyan, \textit{mint} a JPEG tömörítő algoritmusa; hogy az ember számára nem látható részleteket eliminálja a képből, ezzel csökkentve a fájlméretet
\item \textit{eredmény}: minél jobbak a leképezőfüggvényeink, annál jobban fog hasonlítani a végeredmény az eredeti bemenetre
\item pl. arc generálása, javító algoritmusok
%\item előnyös megközelítés, de vannak hátrányai
\end{itemize}
%\newpage
\item \underline{GAN -- \textit{generative adversarial network}}
\begin{itemize}
\item lehetséges magyar fordítása: generatív ellenféli hálózat
\item példán keresztül szemléletve: adott két MI
\begin{itemize}
\item az egyiknek ($A$ vagy \textbf{generátor}) a feladata: tanulja meg, hogyan kell bankjegyet hamisítani
\item a másiknak ($B$ vagy \textbf{diszkriminátor}) a feladata: tanulja meg felismerni a hamis bankjegyeket
\item a két modell interakcióban van egymással
\item kezdetben az $A$ szörnyen teljesít, így a $B$-nek könnyű dolga van
\item ahogy $A$ egyre fejlődik, úgy válik $B$-nek a feladata nehezebbé
\item ezt a módszert \textbf{generátor-diszkriminátor modell}nek is hívják
\end{itemize}
\end{itemize}
\end{enumerate}
\end{itemize}
\end{enumerate}
\subsection{Mitől nehéz az optimalizáció?}
\begin{itemize}
\item $\boxed{f^* = \arg \min_{w \in W}^{~} (w, x)}$ -- jellemzően $W \subseteq \mathbb{R}^N$, ahol $N > 10^6$
\item azaz \textit{hatalmas a dimenzionalitás}, amivel dolgoznunk kell
\begin{itemize}
\item nem egyértelmű, melyik súlyt finomhangoljuk
\end{itemize}
\item nem gyakran folytonos / deriválható / monoton $\to$ csúnya függvények
\begin{itemize}
\item más szóval ``rücskös'' függvények (\textit{rugged functions})
\item nem alkalmazhatók a jól ismert tteleink analízisból $\to$ nincs esélyünk megtalálni az egzakt szélsőértékeit
\item ezért \textbf{közelítenünk kell felé}
\end{itemize}
\end{itemize}
\subsection{Hogyan próbálkozhatunk?}
\begin{itemize}
\item a biológiából, a természetből inspirálódunk $\to$ \textbf{matematikai modellek}
%\item olyan \textbf{matematikai modellek}et állítunk fel, melyek kellőképpen modellezik egy adott biológiai konstrukció működését
\begin{enumerate}[A)]
\item agy $\to$ \textbf{mesterséges neurális hálók} (\textit{artificial neural networks})
\item evolúció $\to$ \textbf{evolúciós algoritmusok} (\textit{evolutionary algorithms})
\item társas rovarok $\to$ \textbf{rajintelligencia} (\textit{swarm intelligence methods})
\end{enumerate}
\item róluk később bővebben lesz szó
\end{itemize}
\newpage
\section{Felügyelt tanulás}
Más fordítások: ellenőrzött tanulás.
\subsection{Felügyelet nélküli tanulás -- visszatekintés}
\begin{itemize}
\item nagy adathalmaz $\to$ megpróbál hasonlóságokat és különbségeket észrevenni $\to$ csoportosítás, klaszterezés
\item nincs visszacsatolás a környezettől, nincs (számszerű) visszajelzés
\end{itemize}
\subsection{Felügyelt tanulás}
\begin{itemize}
\item van egy ``tanító'', azaz az \textbf{adataink meg vannak címkézve}, ami egyfajta visszajelzésül szolgál
\item pl. \textbf{hagyományos számítógépes programozás} %-- \framebox{computer(input, program) : output}
\begin{stuki*}[8cm]{Computer($i : Input$, $p : Program$) : $Output$}
\stm{\texttt{/* operations */}}
\stm{\textbf{return} ~ o : Output}
\end{stuki*}
\item ehhez képest a \textbf{felügyelt tanulás}%: \framebox{computer(input, output) : program}
\begin{stuki*}[8cm]{Computer($i : Input$, $o : Output$) : $Program$}
\stm{\texttt{/* operations */}}
\stm{\textbf{return} ~ p : Program}
\end{stuki*}
\item emberibb példa: ``\textit{mit csinál a gép}'' feladattípus (2. osztályból) $\to$ a programra kell rájönni, ahol ismerjük a bemenetet és a kimenetet
\item \textbf{felügyelet nélküli tanulás}: a visszacsatolás hiányzik (címkeinformáció) $\to$ sokkal nehezebbnek tűnik %-- \framebox{computer(input) : program $\times$ output}
\begin{stuki*}[8cm]{Computer($i : Input$) : $Output \times Program$}
\stm{\texttt{/* operations */}}
\stm{\textbf{return} ~ op : Output \times Program}
\end{stuki*}
\end{itemize}
\subsection{A tanulás típusai}
\begin{itemize}
\item \textbf{tanulás}: saját teljesítményünk fejlesztése megfigyelések alapján
Machine Learning
\item \textbf{gépi tanulás}: az MI ``\textit{részhalmaza}'', a számítógépes rendszerek a megfigyelendő adatokban található mintákból tanul
\item \underline{tanulási feladatok}
\begin{itemize}
\item \textbf{klasszifikáció} (osztályozás): ahol egy véges halmaz a kimenet
\item \textbf{regressziós} : $\mathbb{R}$ ahol a kimenet egy numerikus predikció, (numerikus) feladat
\end{itemize}
\item (2. osztályos példa) hogyan jövünk rá a programra / az algoritmusra? $\to$ mintát fedezünk fel a bemenet és kimenet között ÉS / VAGY próbálkozunk (és ezt optimalizáljuk)
\item a hiba segítségével lehet irányítani a tanítást $\to$ modell (függvény) $\Longrightarrow$ távolságfüggvény
\end{itemize}
\subsection{Mi az a felügyelt tanulás?}
%Formális definíció:
\begin{tcolorbox}
Adott egy $N$ darabból álló \textbf{tanító adathalmaz} (\textit{training data set}), mely \[ (x_1,y_1), (x_2,y_2), \dots, (x_N, y_N) \] bemeneti-kimeneti párokból áll, melyeket egy ismeretlen $y = f(x)$ függvény generált. A feladat, hogy fedezzük fel a $h$ függvényt (\textbf{hipotézis}t -- modellt), ami az igazi $f$ függvényt közelíti.
\end{tcolorbox}
\begin{itemize}
\item adottak bement-kimenet párosak: $x_1^{(p)}, \dots, x_n^{(p)}, d^{(p)}$
\item $p$: a minták száma, $n$-dimenziós bemenet, skaláris kimenet
\item $x$ vektor $\to$ rendszeren és modellen keresztül $\to$ $d$ és $y$
\begin{center}
\includegraphics[scale=0.3]{ea_ppt/03_SupervisedLearning}
\end{center}
\item a hiba vezérli a tanulást, és a hibát onnan tudjuk, hogy ismerjük a helyes kimenetet
\item sokféle tanítási módszer létezik
\item szemléletes példa: $(x,y)$ pontpárokat adunk meg $\to$ találjunk egy függvényt, ami átmegy ezeken a pontokon
\begin{center}
\includegraphics[scale=0.5]{img/ea03_function_approx}
\end{center}
\item mi a baj ezzel a megközelítéssel? $\to$ túl specifikus az eredmény, más bemenet esetén nem lesz jó az eredményünk
\item adathalmaz / tanítóminta -- ne csak egy adott adatszettre illeszkedjen rá $\to$ \textbf{legyen jó az általánosítóképessége}
\end{itemize}
\subsection{Problémák}
\begin{itemize}
\item alulilleszkedés: túl egyszerű a modell, így nem jó az általánosító képessége
\item túlilleszkedés: túl specifikus, szintén nem kezeli jól a tesztadatot
\end{itemize}
\subsection{Döntési fák}
\begin{itemize}
\item fák egyes csúcsaiban egyes helyzetek vannak, ahol az élek egyes döntéseket jelentenek
\item egy logikai döntési fára gondolhatunk így is:
\[ Output \Longleftrightarrow (Path_1 \lor Path_2 \lor \dots) \] ahol az egyes $Path$ok (fagráfon utak) a gyökérből az egyes levelekbe vezető utakat jelölik (tehát, hogy igaz vagy hamis döntésre jutottunk az egyes lépéseket követően)
\item pl. éttermi várakozási probléma
\begin{itemize}
\item rengeteg szempont felsorolva, mindegyikhez tartozhat néhány eset
\item a szerzők felállítottak egy döntési fát erre a szituációra
\begin{center}
\includegraphics[scale=0.5]{img/ea03_decision_tree_idea}
\end{center}
\item mit csináljon, ha vannak információink nemcsak az inputról, hanem az outputról?
\item az attribútumminták alapján hogyan tudunk felépíteni egy fát?
\begin{center}
\includegraphics[scale=0.5]{img/ea03_decision_tree_outcomes}
\end{center}
\item eddig csak kézzel építettünk fel, most automatizáljuk a folyamatot
\item precedenciát állítunk fel az attribútumok alapján; azaz lesznek fontosabb attribútumok (szempontok), amik előnyt élveznek a többivel szemben
\begin{center}
\includegraphics[scale=0.5]{img/ea03_decision_tree_subproblems}
\end{center}
\item mikor fontosabb egy attribútum, ha jobban szeparálja az eseteket
\item ezt az algoritmust rekurzíve meghívjuk és így építjük fel a fát $\to$ optimélis lesz az bemeneti adathalmaz szempontjából, megkapjuk, hogy optimálisan hogy jutunk el a legrövidebb úton a fa gyökeréből a csúcsba
\begin{center}
\includegraphics[scale=0.5]{img/ea03_decision_tree_computer_generated}
\end{center}
\end{itemize}
\item \underline{előnyei}
\begin{itemize}
\item könnyű megérteni
\item hatalmas adathalmazra is jól kiterjeszthető (scalability)
\item rugalmasan kezeli a véges és folytonos adatokat
\item klasszifikáció és regresszió egyszerre
\end{itemize}
\item \underline{hátrányai}
\begin{itemize}
\item szuboptimális pontosság (főleg a mohó keresés miatt)
\item ha a fa mély, egy új előrejelzés nagyon költséges lehet egy új példánál
\item a döntési fák instabilak -- egyetlen új példa hozzáadása a teljes fát megváltoztathatja
\end{itemize}
\end{itemize}
\subsection{Regresszió}
\begin{itemize}
\item feladat: egy lineáris függvényt hogyan illeszthetünk rá egy adathalmazra
\end{itemize}
\begin{minipage}{0.33\linewidth}
\begin{center}
\includegraphics[scale=0.25]{img/ea03_regression/01}
\end{center}
\end{minipage}
\begin{minipage}{0.33\linewidth}
\begin{center}
\includegraphics[scale=0.25]{img/ea03_regression/02}
\end{center}
\end{minipage}
\begin{minipage}{0.33\linewidth}
\begin{center}
\includegraphics[scale=0.25]{img/ea03_regression/03}
\end{center}
\end{minipage}
\newpage
\section{Neurális hálózatok}
\subsection{Biológiai és mesterséges neuronok}
\subsubsection{Biológiai neuronok}
\begin{itemize}
\item a biológiából jött a motiváció -- ha ott működik, miért ne működne gépeknél is?
\item \textbf{emberi idegrendszer}: egy nagyon összetett rendszer
\begin{itemize}
\item \textit{feladatai}: emlékezés, gondolkozás, problémamegoldás, döntéshozatal, stb.
\item \textit{neuron}: jeleket kap meg más neuronoktól és ezeket kombinálja
\begin{itemize}
\item egy baba az agyában $10^{11}$ db. neuronnal születik
\item egy neuron kb. 1000 neuronhoz van hozzácsatlakoztatva $\to$ $10^{14}$ db. kapcsolat \\ (vagy él, ha gráfos szempontból közelítjük meg)
\item az emberi memóriakapacitás: 1 és 1000 TB között
\end{itemize}
\item ezek a jelek a \textit{dendrit}ek mentén haladnak
\item ha a jel elég erős $\to$ kimeneti jel az \textit{axon}on keresztül más neuronokhoz
\end{itemize}
\item felépítése
\begin{itemize}
\item neuronok (idegsejtek) -- $10^{11}$ darab van belőlük
\item átlagosan 100 összeköttetés per idegsejt $\to$ 100 billió összesen
\item sejttest $\to$ információ $\to$ axon
\end{itemize}
\end{itemize}
\subsubsection{Mesterséges neuronok}
\begin{itemize}
\item az emberi agy és a számítógép összehasonlítása
\begin{center}
\begin{tabular}{|l|c|c|}
\hline
& \textbf{Számítógép} & \textbf{Emberi agy} \\
\hline
\textit{Sebesség} & 4 GHz felett & 40-50 Hz \\
\hline
\textit{Működési mód} & sorosan (lineárisan) & párhuzamosan \\
\hline
\textit{Ember felismerése} & bonyolult & könnyű\footnote{(A párhuzamosságnak köszönhetően.)} \\
\hline
\end{tabular}
\end{center}
\item az idegrendszernek egy egyszerűsített modelljét használjuk fel az MI-ben is
\item \textbf{mesterséges neuron}: a bemenetek $n$-dimenziós \textit{vektorok} ($(x_1, \dots, x_n)$, ezek a), melyek \textit{súlyok}kal rendelkeznek ($(w_1, \dots, w_n)$), melyeket egy $v$ értékben ``összeadó csomópontban'' (\textit{summing junction}) számszerűsítünk. Ezeket átadjuk egy $\Phi$ függvénynek, ami visszaalakítja olyan formátumúvá, hogy bemenetként fel tudják használni más neuronok
\[ \big( (x_1,w_1), \dots, (x_n, w_n) \big) =: \textbf{v} \mapsto \Phi(\textbf{v}) := (y_1, \dots, y_n) \]
\begin{itemize}
\item önmagukban csak egyszerű feladatok megoldására képesek
\item viszont ha elég sokat használunk fel belőlük, melyek össze vannak kötve egymással, képesek komplex feladatokat is megoldani
\item $\Phi$ -- \textbf{aktivációs függvény}: a kimenetet két aszimptota között korlátozza le, hogy a neuronok egy ésszerű, dinamikus intervallumon belül legyenek értelmezve \\ Tipikusan \textbf{lépcsős} (\textit{step function}) vagy \textbf{szigmoid függvény} (\textit{sigmoid function}) szokott lenni.
\begin{figure}[h!]
\centering
\includegraphics[scale=0.35]{img/04/activation_function}
\caption{Lépcsős és szigmoid függvény}
\end{figure}
\end{itemize}
\end{itemize}
\subsection{Egyrétegű perceptronok}
\begin{itemize}
\item Rosenblatt vezette be 1958-ban, ez volt az első modell felügyelt tanulásra
\item a McCulloch--Pitts-modellen alapult
\item feladat: lineárisan szétválasztja (szeparálja) $\Longrightarrow$ \textbf{osztályozza az adathalmazt}
\item előfeltétel: az adat legyen \textbf{lineárisan szeparálható}
\item ezen limitáció miatt elapadt a lelkesedés iránta, de a '80-as években ismét elkezdtek érdeklődni a kutatók (napjainkban is fontosak)
\item ennek továbbfejlesztett változata a \textit{többrétegű perceptronok}, melyek lineárisan nem szeparálható mintákat is képesek csoportosítani
\end{itemize}
\subsubsection{Lineáris szeparabilitás}
\begin{itemize}
%\item feladat: lineárisan szétválasztja (szeparálja) $\Longrightarrow$ \textbf{osztályozza az adathalmazt}
\item Matematikai jelentése: \textbf{szerkesszünk egy hipersíkot, amely kettéválasztja az adatokat úgy, hogy egy adat pontosan egy csoportba tartozhat} (függvény grafikonja felett vagy alatt)
\item Megjegyzés: kétdimenziós adatok esetén egyenest, $n$-dimenziós adathalmaz esetén $(n-1)$-dimenziós hipersík lesz a szeparátorunk
\begin{figure}[h!]
\centering
\includegraphics[scale=0.125]{img/04/separating_hyperplanes}
\caption{A $H_1$ hipersík nem választja szét az adathalmazt, míg a $H_2$ és $H_3$ igen.}
\end{figure}
\item Példa: vegyünk két bemenetet: $(x_1,x_2)$
\begin{itemize}
\item Megadhatunk-e rá egy szétválasztó egyenest? %~~~ $-w_0 + x_1 w_1 + x_2 w_2 = 0$
\[-w_0 + x_1 w_1 + x_2 w_2 = 0\]
\item A perceptronok paramétereit \textbf{súlyok}nak (\textit{weights}) hívjuk: $w_1, w_2, \dots$
\item Mi az egyenlete? %~~~ $x_2 = - \dfrac{w_1}{w_2} x_1 + \dfrac{w_0}{w_2}$
\[x_2 = - \dfrac{w_1}{w_2} x_1 + \dfrac{w_0}{w_2}\]
\end{itemize}
\end{itemize}
\subsubsection{Logikai kapuk}
\begin{itemize}
\item Tipikusan kétváltozós, McCulloch-Pitts perceptronokkal megoldható feladat a logikai kapuk implementációja
\item A \textbf{logikai függvények} (\textit{boolean functions}), mint a $\land$ (AND), $\lor$ (OR) és a $\neg$ (NOT) jól szeparálhatók lineárisan.\footnote{\textbf{\textit{Megjegyzés}}. Összesen $2^4 = 16$ darab logikai függvény van, viszont a felsorolt 3-ból ($\land$, $\lor$ és $\neg$) kirakhatjuk az összes többit is.}
\item Mindegyik függvényre vannak bemeneteink: $in_1$ és $in_2$, valamint egy $out$ kimenet, melyekhez meg kell határoznunk a súlyokat és a küszöbértéket
\begin{figure}[h!]
\centering
\includegraphics[scale=0.225]{img/04/logical_gates_01}
\caption{A NOT, AND és OR függvények implementációja}
\end{figure}
%Az AND függvényre a kimenet így kapható meg:\[ out = sgn(w_1 \cdot in_1 + w_2 \cdot in_2 - \theta). \]
%A súlyok az ábrán az élek melletti értékek. A küszöbérték: $\theta = 0,5$.
\item Vannak azonban olyan függvények, amelyekhez kézzel nem szerkeszthetünk ilyen hálózatot. Ilyen például az XOR
\begin{figure}[h!]
\centering
\includegraphics[scale=0.225]{img/04/logical_gates_02}
\caption{Az XOR-hoz nem tudunk megfelelő súlyokat megadni}
\end{figure}
\item Mindegyik \textbf{tanítóminta} (\textit{training pattern}) lineáris egyenlőtlenségeket állít elő a kimenet számára, melyek a hálózat bemeneteiből és a hálózat paramétereiből állnak $\to$ ebből kiszámíthatjuk a súlyokat és a küszöbértéket
\item A következő egyenlőséget kell kielégítenie: \[ out = sgn(w_1 \cdot in_1 + w_2 \cdot in_2 - \theta). \]
\begin{figure}[h!]
\centering
\includegraphics[scale=0.225]{img/04/logical_gates_03}
\caption{Az AND-hez tartozó egyenlőtlenségrendszer}
\end{figure}
\item Láthatjuk, hogy \textbf{végtelen sok megoldás}unk lehet. Hasonló igaz ez a NOT-ra és az OR-ra is.
\item Ha a fenti egyenlőtlenséget elvégezzük az XOR-ra $\to$ a 2. és a 3. ellent mond a 4. egyenlőtlenséggel, így \textbf{nincs megoldása a feladatnak} (hátránya a perceptronoknak)
\begin{figure}[h!]
\centering
\includegraphics[scale=0.225]{img/04/logical_gates_04}
\caption{Az AND-hez tartozó egyenlőtlenségrendszer}
\end{figure}
\item komplexebb hálózatokra lenne szükségünk, vagyis olyanokra, melyek több kisebb hálózatot kombinálnak; vagy egy másik aktivációs függvényt kellene használnunk
\item akárhogy is, bonyolultabbá válik a küszöbérték és a súlyok meghatározása papíron
\end{itemize}
\subsection{Perceptronok tanítása}
\begin{itemize}
\item angolul: \textbf{training of perceptro}ns (itt: \textit{tanítás}, esetleg \textit{kiképzés})
\end{itemize}
A perceptronok tanításának algoritmusa.
\begin{enumerate}[I.)]
\item \underline{Inicializáció}
\begin{itemize}
\item állítsuk be a kezdeti értékeit a \textbf{súlyok}nak: $w_1, w_2, \dots, w_m$
\item állítsunk be egy $\theta$ \textbf{küszöbérték}et egy random számra a(z) $\theta \in \left[ - \dfrac{1}{2}, \dfrac{1}{2} \right]$ intervallumból
\item állítsuk be a $\eta$ \textbf{tanulási rátá}t egy pozitív számra úgy, hogy $\eta < 1$
\end{itemize}
\item \underline{Aktiváció}
\begin{itemize}
\item számítsuk ki a $p$-edik iteráció \textbf{tényleges kimenet}ét
\[ y = \Phi \left( \sum\limits_{i = 1}^{m} x_i \cdot w_i \right) \]
\item aktivációs függvény: \textbf{küszöbérték / lépésfüggvény} (vagy előjelfüggvény)
\[ y(p) = step \left[ \left( \sum\limits_{i = 1}^{m} x_i \cdot w_i \right) - \theta \right] \]
\end{itemize}
\item \underline{Súlyok tanítása}: a perceptronok súlyainak frissítése
\begin{itemize}
\item új súlyok: \[ w_i(p+1) = w_i(p) + \Delta w_i(p) \]
\item súlykorrekció: \[ \Delta w_i(p) = \eta \cdot x_i(p) \cdot e(p) \]
\item hiba (\textit{error}): \[ e(p) = d(p) - y(p) \]
\end{itemize}
\item \underline{Iteráció}: inkrementáljuk egyesével a $p$-t, térjünk vissza a II. lépéshez és ismételjük a folyamatot a konvergenciáig
\end{enumerate}
Példa az algoritmusra: \framebox{perceptronok tanítása a logikai ``és'' műveletére} .
\newpage
\begin{figure}[h!]
%\centering
Az epochnak 4 lehetséges bemeneti mintája van: \[ 00,~01,~10,~11. \]
Kezdeti súlyok: \[ w_1 := 0,3 ~\text{ és }~ w_2 := -0,1. \]
Küszöbérték: $\theta := 0,2$.
Tanulási ráta: $\eta := 0,1$.
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|}
\hline
\textbf{Epoch} & \textbf{\makecell[c]{Ite-\\ráció}} & \multicolumn{2}{c|}{\textbf{Bemenetek}} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Kezdeti \\ súlyok}}} & \textbf{\makecell[c]{Elvárt \\ kimenet}} & \textbf{\makecell[c]{Tényleges \\ kimenetek}} & \textbf{Hiba} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Végleges \\ súlyok}}} \\
\hline
& $p$ & $x_1(p)$ & $x_2(p)$ & $w_1(p)$ & $w_2(p)$ & $d(p)$ & $y(p)$ & $e(p)$ & $w_1(p+1)$ & $w_2(p+1)$ \\
\hline
1 & 1 & 0 & 0 & $\textbf{0,3}$ & $\textbf{--0,1}$ & & & & & \\
\hline
& 2 & 0 & 1 & & & & & & & \\
\hline
& 3 & 1 & 0 & & & & & & & \\
\hline
& 4 & 1 & 1 & & & & & & & \\
\hline
\end{tabular}
\caption{1. lépés -- Initicializáció}
\end{figure}
\begin{figure}[h!]
%\centering
Tényleges kimenetek:
\begin{flalign*}
y(p) = y(1) = step \left[ \left( \sum\limits_{i = 1}^{m} x_i \cdot w_i \right) - \theta \right] = step \left[ \left( 0 \cdot (0,3) + 0 \cdot (-0,1) \right) - 0,2 \right] = step \left( -0,2 \right) = 0
\end{flalign*}
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|}
\hline
\textbf{Epoch} & \textbf{\makecell[c]{Ite-\\ráció}} & \multicolumn{2}{c|}{\textbf{Bemenetek}} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Kezdeti \\ súlyok}}} & \textbf{\makecell[c]{Elvárt \\ kimenet}} & \textbf{\makecell[c]{Tényleges \\ kimenetek}} & \textbf{Hiba} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Végleges \\ súlyok}}} \\
\hline
& $p$ & $x_1(p)$ & $x_2(p)$ & $w_1(p)$ & $w_2(p)$ & $d(p)$ & $y(p)$ & $e(p)$ & $w_1(p+1)$ & $w_2(p+1)$ \\
\hline
1 & 1 & 0 & 0 & $0,3$ & $-0,1$ & & \textbf{0} & & & \\
\hline
& 2 & 0 & 1 & & & & & & & \\
\hline
& 3 & 1 & 0 & & & & & & & \\
\hline
& 4 & 1 & 1 & & & & & & & \\
\hline
\end{tabular}
\caption{2. lépés -- Aktiváció}
\end{figure}
\begin{figure}[h!]
%\centering
Az ``és'' műveletre a 00 bemenetekre 0 lesz az eredmény.
Hiba:
\begin{flalign*}
e(p) = e(1) = d(1) - y(1) = 0-0 = 0.
\end{flalign*}
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|}
\hline
\textbf{Epoch} & \textbf{\makecell[c]{Ite-\\ráció}} & \multicolumn{2}{c|}{\textbf{Bemenetek}} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Kezdeti \\ súlyok}}} & \textbf{\makecell[c]{Elvárt \\ kimenet}} & \textbf{\makecell[c]{Tényleges \\ kimenetek}} & \textbf{Hiba} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Végleges \\ súlyok}}} \\
\hline
& $p$ & $x_1(p)$ & $x_2(p)$ & $w_1(p)$ & $w_2(p)$ & $d(p)$ & $y(p)$ & $e(p)$ & $w_1(p+1)$ & $w_2(p+1)$ \\
\hline
1 & 1 & 0 & 0 & $0,3$ & $-0,1$ & \textbf{0} & 0 & \textbf{0} & & \\
\hline
& 2 & 0 & 1 & & & & & & & \\
\hline
& 3 & 1 & 0 & & & & & & & \\
\hline
& 4 & 1 & 1 & & & & & & & \\
\hline
\end{tabular}
\caption{3. lépés -- Súlyok tanítása (1/2)}
\end{figure}
\begin{figure}[h!]
%\centering
Az új súlyok kiszámítása.
\begin{flalign*}
\Delta w_1(p) & = \Delta w_1(1) = \eta \cdot x_1(1) \cdot e(1) = 0,1 \cdot 0 \cdot 0 = 0 \\
\Delta w_1(p+1) & = w_1(1) + \Delta w_1(1) = 0,3 + 0 = 0,3 \\
\Delta w_2(p) & = \Delta w_2(1) = \eta \cdot x_2(1) \cdot e(1) = 0,1 \cdot 0 \cdot 0 = 0 \\
\Delta w_2(p+1) & = w_2(1) + \Delta w_2(1) = (-0,1) + 0 = -0,1
\end{flalign*}
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|}
\hline
\textbf{Epoch} & \textbf{\makecell[c]{Ite-\\ráció}} & \multicolumn{2}{c|}{\textbf{Bemenetek}} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Kezdeti \\ súlyok}}} & \textbf{\makecell[c]{Elvárt \\ kimenet}} & \textbf{\makecell[c]{Tényleges \\ kimenetek}} & \textbf{Hiba} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Végleges \\ súlyok}}} \\
\hline
& $p$ & $x_1(p)$ & $x_2(p)$ & $w_1(p)$ & $w_2(p)$ & $d(p)$ & $y(p)$ & $e(p)$ & $w_1(p+1)$ & $w_2(p+1)$ \\
\hline
1 & 1 & 0 & 0 & $0,3$ & $-0,1$ & 0 & 0 & 0 & $\textbf{0,3}$ & $\textbf{--0,1}$ \\
\hline
& 2 & 0 & 1 & & & & & & & \\
\hline
& 3 & 1 & 0 & & & & & & & \\
\hline
& 4 & 1 & 1 & & & & & & & \\
\hline
\end{tabular}
\caption{3. lépés -- Súlyok tanítása (2/2)}
\end{figure}
\begin{figure}[h!]
%\centering
Innentől $p := p + 1 = 2$. Ismételjük a 2-3-4. lépéseket, ameddig el nem kezd konvergálni.
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|}
\hline
\textbf{Epoch} & \textbf{\makecell[c]{Ite-\\ráció}} & \multicolumn{2}{c|}{\textbf{Bemenetek}} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Kezdeti \\ súlyok}}} & \textbf{\makecell[c]{Elvárt \\ kimenet}} & \textbf{\makecell[c]{Tényleges \\ kimenetek}} & \textbf{Hiba} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Végleges \\ súlyok}}} \\
\hline
& $p$ & $x_1(p)$ & $x_2(p)$ & $w_1(p)$ & $w_2(p)$ & $d(p)$ & $y(p)$ & $e(p)$ & $w_1(p+1)$ & $w_2(p+1)$ \\
\hline
1 & 1 & 0 & 0 & $0,3$ & $-0,1$ & 0 & 0 & 0 & ${0,3}$ & ${-0,1}$ \\
\hline
& 2 & 0 & 1 & $\textbf{0,3}$ & $\textbf{--0,1}$ & & & & & \\
\hline
& 3 & 1 & 0 & & & & & & & \\
\hline
& 4 & 1 & 1 & & & & & & & \\
\hline
\end{tabular}
\caption{4. lépés -- Iteráció}
\end{figure}
\begin{figure}[h!]
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|}
\hline
\textbf{Epoch} & \textbf{\makecell[c]{Ite-\\ráció}} & \multicolumn{2}{c|}{\textbf{Bemenetek}} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Kezdeti \\ súlyok}}} & \textbf{\makecell[c]{Elvárt \\ kimenet}} & \textbf{\makecell[c]{Tényleges \\ kimenetek}} & \textbf{Hiba} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Végleges \\ súlyok}}} \\
\hline
& $p$ & $x_1(p)$ & $x_2(p)$ & $w_1(p)$ & $w_2(p)$ & $d(p)$ & $y(p)$ & $e(p)$ & $w_1(p+1)$ & $w_2(p+1)$ \\
\hline
1 & 1 & 0 & 0 & $0,3$ & $-0,1$ & 0 & 0 & 0 & ${0,3}$ & ${-0,1}$ \\
\hline
& 2 & 0 & 1 & ${0,3}$ & ${-0,1}$ & 0 & 0 & 0 & $0,3$ & $-0,1$ \\
\hline
& 3 & 1 & 0 & $0,3$ & $-0,1$ & 0 & 1 & $-1$ & $0,2$ & $-0,1$ \\
\hline
& 4 & 1 & 1 & $0,2$ & $-0,1$ & 1 & 0 & 1 & $0,3$ & $0,0$ \\
\hline
\end{tabular}
\caption{1. epoch végeredménye}
\end{figure}
\textbf{\textit{Megjegyzés}}. Az ``\textit{epoch}'' kifejezés szó szerint \textit{kor}t, \textit{korszak}ot jelent. Szinonimaként a GT témakörében még generációnak (\textit{generation}) is nevezik, leginkább az evolúciós algoritmusok esetében. Arra utal, hogy ``hanyadik generációs fejlettségben'' van az adathalmaz. Nem vagyok benne biztos, hogyan szokták lefordítani a magyar szakirodalomban, így inkább az angol megfelelőjét választottam.
\clearpage
\begin{figure}[h]
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|}
\hline
\textbf{Epoch} & \textbf{\makecell[c]{Ite-\\ráció}} & \multicolumn{2}{c|}{\textbf{Bemenetek}} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Kezdeti \\ súlyok}}} & \textbf{\makecell[c]{Elvárt \\ kimenet}} & \textbf{\makecell[c]{Tényleges \\ kimenetek}} & \textbf{Hiba} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Végleges \\ súlyok}}} \\
\hline
& $p$ & $x_1(p)$ & $x_2(p)$ & $w_1(p)$ & $w_2(p)$ & $d(p)$ & $y(p)$ & $e(p)$ & $w_1(p+1)$ & $w_2(p+1)$ \\
\hline
2 & 5 & 0 & 0 & $0,3$ & $0,0$ & 0 & 0 & 0 & ${0,3}$ & ${0,0}$ \\
\hline
& 6 & 0 & 1 & ${0,3}$ & ${0,0}$ & 0 & 0 & 0 & $0,3$ & $0,0$ \\
\hline
& 7 & 1 & 0 & $0,3$ & $0,0$ & 0 & 1 & $-1$ & $0,2$ & $0,0$ \\
\hline
& 8 & 1 & 1 & $0,2$ & $0,0$ & 1 & 1 & 0 & $0,2$ & $0,0$ \\
\hline
\end{tabular}
\caption{2. epoch végeredménye}
\end{figure}
\begin{figure}[h]
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|}
\hline
\textbf{Epoch} & \textbf{\makecell[c]{Ite-\\ráció}} & \multicolumn{2}{c|}{\textbf{Bemenetek}} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Kezdeti \\ súlyok}}} & \textbf{\makecell[c]{Elvárt \\ kimenet}} & \textbf{\makecell[c]{Tényleges \\ kimenetek}} & \textbf{Hiba} & \multicolumn{2}{c|}{\textbf{\makecell[c]{Végleges \\ súlyok}}} \\
\hline
& $p$ & $x_1(p)$ & $x_2(p)$ & $w_1(p)$ & $w_2(p)$ & $d(p)$ & $y(p)$ & $e(p)$ & $w_1(p+1)$ & $w_2(p+1)$ \\
\hline
5 & 17 & 0 & 0 & $0,1$ & $0,1$ & 0 & 0 & \textbf{0} & $0,1$ & $0,1$ \\
\hline
& 18 & 0 & 1 & $0,1$ & $0,1$ & 0 & 0 & \textbf{0} & $0,1$ & $0,1$ \\
\hline
& 19 & 1 & 0 & $0,1$ & $0,1$ & 0 & 0 & \textbf{0} & $0,1$ & $0,1$ \\
\hline
& 20 & 1 & 1 & $0,1$ & $0,1$ & 1 & 1 & \textbf{0} & $0,1$ & $0,1$ \\
\hline
\end{tabular}
\caption{5. epoch végeredménye}
\end{figure}
\begin{itemize}
\item Ilyen feladat szerepelhet a vizsgán!
\item Bebizonyították, hogy ezzel az algoritmussal bármely kétosztályosan szeparálható feladatra adható egy szétválasztó hipersík (ami két osztály esetén egy egyenes).
\item A konvergencia gyorsasága sok mindentől függ: a sorrendtől, a küszöbértékektől (egyes $\theta$ értékekre jobban konvergál), stb.
\item A back-propagattion algoritmussal több perceptront összerakhatnak hálózatba
\end{itemize}
~\\
\begin{footnotesize}
\setlength{\stmheight}{14pt}
A következő struktogram csak vázlatosan szemlélteti az algoritmust. Feltételezzük, hogy az egyes paraméterek, mint az $epochs : \mathbb{N}^+$, $\theta : [-0.5, 0.5]$ és $\eta : \mathbb{R}$ változók globálisak. A pontos implementációs részleteket (globális változók, helyes inicializáció, függvényparaméter-átadás érték, cím vagy referencia szerint, stb.) az Olvasóra bízzuk.
\begin{minipage}{0.7\linewidth}
\begin{stuki*}{Perceptron$\left( x / 1 : \mathbb{R}[n \times m], ~ d/1 : \mathbb{R}[n] \right) : \mathbb{R}[n]$}
\stm{w / 1 := \textbf{ new } \mathbb{R}[n \times m]}
\stm{y/1, ~ e/1 := \textbf{ new } \mathbb{R}[n]}
\stm*{// step 1: initialisation}
\begin{WHILE}{1}{\stm{i := 1 \textbf{ to } m}}
\stm{w[1, i] := \text{random}(-0.5, 0.5) ~~ \text{// $[-0.5, 0.5]$}}
\end{WHILE}
\stm{c := 1 ~ \text{// countdown for the number of epochs}}
\begin{WHILE}{7}{\stm{c \leq epochs \land \neg \text{IsErrorFree}(e)}}
\begin{WHILE}{5}{\stm{p := 1 \textbf{ to } n}}
\stm{y[p] := \Phi(x, w, p) ~~ \text{// step 2: activation}}
\stm{e[p] := d[p] - y[p] ~~ \text{// step 3: weight training}}
\begin{WHILE}{2}{\stm{i := 1 \textbf{ to } m}}
\stm{\Delta w_i (p) := \eta \cdot x[p, i] \cdot e[p]}
\stm{w[((p + 1) \% m) + 1, i] := w[p, i] + \Delta w_i (p)}
\end{WHILE}
\end{WHILE}
\stm{c := c + 1}
\end{WHILE}
\stm{\textbf{delete } w, e; ~ \textbf{return } y}
\end{stuki*}
\end{minipage}
\begin{minipage}{0.3\linewidth}
\begin{stuki*}[5cm]{$\Phi(x / 1, w/1 : \mathbb{R}[n \times m], ~ p : \mathbb{N}^+ )$}
\stm{s := 0}
\begin{WHILE}{1}{\stm{i := 1 \textbf{ to } m}}
\stm{s := s + (x[p, i] \cdot w[p, i])}
\end{WHILE}
\stm{s := s - \theta}
\stm{\textbf{return } \text{step}(s)}
\end{stuki*}
~\\
\begin{stuki*}[5cm]{IsErrorFree$(e / 1 : \mathbb{R}[n]) : \mathbb{B}$}
\stm{b := true}
\begin{WHILE}{1}{\stm{i := 1 \textbf{ to } n}}
\stm{b := b \land (e[i] = 0)}
\end{WHILE}
\stm{\textbf{return } b}
\end{stuki*}
\end{minipage}
\end{footnotesize}
\newpage
\section{Etikai és jogi kérdések az MI területén}
\subsection{Az MI eredményei és nem kívánt következményei}
\begin{itemize}
\item az MI létrejöttének elsődleges motivációja az emberek mindennapjainak könnyebbé, kényelmesebbé tétele
\begin{itemize}
\item technológiai áttörések (pl. navigációs és GPS, stb.)
\item monoton feladatok automatizációja $\to$ hatékénység növelése
\item kutatásfejlesztésben áttörések ennek köszönhetően
\item (meg csomó példát lehet mondani, hamar össze tud szedni ilyeneket az ember)
\end{itemize}
\item Center for Humane Technology
\begin{itemize}
\item alapítói: Tristan Harris, Aza Raskin
\item mindketten az MI etikai kérdéseivel, következményeivel foglalkoznak (\textit{ethicist})
\item \textbf{az MI-dilemma} (\textit{the AI dilemma}): a tudományág és a technológia fejlődésének mértéke beláthatatlan mértéket ölt, így a friss innovációk olyan következményeket vonhatnak maguk után, melyekre nincs felkészülve a társadalmunk
\begin{itemize}
\item az emberi kép- és hanggenerálás hamar megérkezett, az eredményük minősége gyakran megkülönböztethetetlen a valós nyersanyagtól $\to$ a hang és kép alapú bizonyítékok elavulttá, használhatatlanná váltak az igazságszolgáltatásban
\item széles körben elérhetővé vált a generatív MI, emiatt felhasználhatjuk saját szolgáltatásaink (pl. rúter meghekkelésére írjunk programot), intézményeink kijátszására (pl. autoriter rezsimek manipulációja)
\item jogilag teljesen érintetlen, korlátozások nélküli területek, esetek
\end{itemize}
\item videók az MI-dilemmáról