-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathsummary.html
78 lines (75 loc) · 4.83 KB
/
summary.html
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
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="common.css" />
<title>真面目なプログラマのためのディープラーニング入門・超要約</title>
<style><!--
--></style>
<body>
<div class=nav>
<a href="index.html">< もどる</a>
</div>
<h1>真面目なプログラマのための<br>
ディープラーニング入門 (超要約)</h1>
<p>
<u>人工知能</u>の本質は、ほとんどの場合、<u>探索</u>である。
なぜなら多くの人工知能の問題には「こうすれば確実に正しい答えが求まる」という
アルゴリズムが存在しないため、無数にある答えの中から「<strong>よさそうな答え</strong>」を
探しだす処理によって正解を得ることが多いからだ。
この探索処理をいかに効率よくおこなうかが人工知能研究のおもなテーマである。
<p>
<u>機械学習</u>の本質も探索である。
ただしその対象は「与えられたデータをうまく予測するような<strong>プログラム</strong>」である。
つまり機械学習とは「<strong>プログラムを作る (探しだす) プログラム</strong>」なのである。
ただし、通常のプログラミング言語は複雑すぎるので、機械学習が探索する「プログラム」は
もっと単純な形式のものを使っている。その表現形式として
<u>決定木</u>や<u>ニューラルネットワーク</u>など、
さまざまなものが提案されている。
<p>
プログラムのような複雑なものを探索する場合、候補の数が膨大なため、
いかに効率的に最良のものを見つけるかが鍵となる (<u>最適化問題</u>)。
ニューラルネットワークでは、手当たり次第に解を試すのではなく
「ひとつの解をすこしずつ改良しながら段階的に良い解にたどりつく」
という方法を使っている (<u>勾配降下法</u>)。
具体的には、1) 解の評価を<u>損失関数</u>と呼ばれるものであらわし、
2) 探索対象を<u>微分可能</u>にすることによって実現する。
<p>
ニューラルネットワークは単純な構造をもっており、さまざまな種類の入力を
扱うことが可能である。さらに、この構造を幾層にも重ねることで、
複雑な問題にも対応できることがわかっている (<u>ディープラーニング</u>)。
とくにディープラーニングの一種である
<u>畳み込みニューラルネットワーク</u> (CNN) は
画像認識によく使われている。
<p>
従来、畳み込みニューラルネットワークの学習は時間のかかるものだったが、
最近では <u>GPU</u>の
並列演算機能を流用することで、飛躍的に性能を上げることができた。
現在では、入力と出力が固定長データして表せるものであれば、
たいていの問題はニューラルネットワークで学習させることが可能である。
<p>
本講座で例としてあげる
物体認識システム (YOLO) や奥行き認識システムは、
どちらも与えられた画像から「物体の種類や大きさ」あるいは
「各ピクセルの奥行き」を推測するようにニューラルネットワークを
学習させるものである。
<p>
(以下は本講座ではまだ扱っていない範囲です)
<p>
ニューラルネットワーク (および、畳み込みニューラルネットワーク) の欠点は、
固定長のデータにしか適用できないということである。したがって
可変長のデータ (音声やテキストなど) に対しては、
<u>再帰的ニューラルネットワーク</u> (RNN) や <u>LSTM</u> などの
方法が提案されてきた。しかし、これらの手法は依然として限界があった。
それは内部表現を固定長のベクトルで表現しているためである。
<p>
この問題を解決するために近年提案された <u>Transformer</u> とよばれる手法では、
可変長データ内における各部分間の関係を<u>自己注意</u>と
呼ばれるものによって表現し、学習させることができる。
Transformer は自然言語処理の分野で特に成果をあげている。
<hr>
<div class=license>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="クリエイティブ・コモンズ・ライセンス" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />この作品は、<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンス</a>の下に提供されています。
</div>
<address>Yusuke Shinyama</address>