<!--
=============================
style設定
thanks to: https://hackmd.io/mJ6dr_haQWmAchJEq4truw?both
=============================
-->
<style>
/* basic design */
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6,
.reveal section, .reveal table, .reveal li, .reveal blockquote, .reveal th, .reveal td, .reveal p {
font-family: 'Meiryo UI', 'Source Sans Pro', Helvetica, sans-serif, 'Helvetica Neue', 'Helvetica', 'Arial', 'Hiragino Sans', 'ヒラギノ角ゴシック', YuGothic, 'Yu Gothic';
text-align: left;
line-height: 1.6;
letter-spacing: normal;
text-shadow: none;
word-wrap: break-word;
color: #444;
}
.reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6 {font-weight: bold;}
.reveal h1, .reveal h2, .reveal h3 {color: #2980b9;}
.reveal th {background: #DDD;}
.reveal section img {background:none; border:none; box-shadow:none; max-width: 95%; max-height: 95%;}
.reveal blockquote {width: 90%; padding: 0.5vw 3.0vw;}
.reveal table {margin: 1.0vw auto;}
.reveal code {line-height: 1.2;}
.reveal p, .reveal li {padding: 0vw; margin: 0vw;}
.reveal .box {margin: -0.5vw 1.5vw 2.0vw -1.5vw; padding: 0.5vw 1.5vw 0.5vw 1.5vw; background: #EEE; border-radius: 1.5vw;}
/* table design */
.reveal table {background: #f5f5f5;}
.reveal th {background: #444; color: #fff;}
.reveal td {position: relative; transition: all 300ms;}
.reveal tbody:hover td { color: transparent; text-shadow: 0 0 3px #aaa;}
.reveal tbody:hover tr:hover td {color: #444; text-shadow: 0 1px 0 #fff;}
/* blockquote design */
.reveal blockquote {
width: 90%;
padding: 0.5vw 0 0.5vw 6.0vw;
font-style: italic;
background: #f5f5f5;
}
.reveal blockquote:before{
position: absolute;
top: 0.1vw;
left: 1vw;
content: "\f10d";
font-family: FontAwesome;
color: #2980b9;
font-size: 3.0vw;
}
/* font size */
.reveal h1 {font-size: 5.0vw;}
.reveal h2 {font-size: 4.0vw;}
.reveal h3 {font-size: 2.8vw;}
.reveal h4 {font-size: 2.6vw;}
.reveal h5 {font-size: 2.4vw;}
.reveal h6 {font-size: 2.2vw;}
.reveal section, .reveal table, .reveal li, .reveal blockquote, .reveal th, .reveal td, .reveal p {font-size: 2.2vw;}
.reveal code {font-size: 1.6vw;}
/* new color */
.red {color: #EE6557;}
.blue {color: #16A6B6;}
/* split slide */
#right {left: -18.33%; text-align: left; float: left; width: 50%; z-index: -10;}
#left {left: 31.25%; text-align: left; float: left; width: 50%; z-index: -10;}
</style>
<style>
/* specific design */
.reveal h2 {
padding: 0 1.5vw;
margin: 0.0vw 0 2.0vw -2.0vw;
border-left: solid 1.2vw #2980b9;
border-bottom: solid 0.8vw #d7d7d7;
}
/* additional design */
span.highlight {
/* color: #337AB7 !important; */
font-weight: bold;
}
</style>
<!--
=============================
slide body starts here:
=============================
-->
## ディープラーニング × 電話代行
### 2020.02.19 G検定勉強会

---
## Google Duplex
- Google Assistantに搭載
- ユーザーの代わりに非同期で電話をかける
- 次の3つのタスクをこなせる
- ヘアサロンの予約
- レストランの予約
- お店の営業時間を確認する
- タスク遂行後はユーザーへ通知

引用: [Google AI Blog: Google Duplex: An AI System for Accomplishing Real-World Tasks Over the Phone](https://ai.googleblog.com/2018/05/duplex-ai-system-for-natural-conversation.html)
---
### 実生活でどう役立つか?
- ネット予約できない店舗に電話をかける手間の削減
- お店の営業時間外でもDuplexにリクエストしておけば予約しておいてくれる
- 休日の営業時間をDuplexが確認しオンラインの情報(Google)に反映
- → 店舗が電話で問い合わせを受ける回数も減る
- 現地語が話せない人や聴覚・発話に困難を抱える人でも予約ができる
---
### デモンストレーション動画 (@35:38~38:55)
{%youtube ogfYd705cRs %}
---
### すごい
- 本物の人間のような自然な声
- 相槌を含めた自然な会話
- cf. 2つ目の例:
- 4名でレストランの予約
- スタッフとの対話によって5人以上でないと予約できないことがわかる
- 混雑度の確認に切り替えてタスクを続行する
---
## Google Duplexの仕組み
```graphviz
digraph {
graph [
ranksep = 1.1
];
compound=true
rankdir=LR
graph [ fontname="Source Sans Pro", fontsize=20 ];
node [ fontname="Source Sans Pro", fontsize=18];
edge [ fontname="Source Sans Pro", fontsize=12 ];
subgraph cluster1 {
concentrate=true
a [label="音声認識"] [shape=box]
b [label="音声化\n(Text to Speech)"] [shape=box]
sync [label="自然言語処理\n 文脈に適した返答を予測 " shape=plaintext ][shape=box]
a -> sync
sync -> b
}
}
```

- ASR = Automatic Speech Recognition (Googleの音声認識)
- TTS = Text to Speech (音声化)
引用: [Google AI Blog: Google Duplex: An AI System for Accomplishing Real-World Tasks Over the Phone](https://ai.googleblog.com/2018/05/duplex-ai-system-for-natural-conversation.html)
---
### リカレントニューラルネットワーク(RNN)
ある時点の情報が、それ以降の処理に影響するケースに対応できるよう
ニューラルネットワークを拡張して時系列データを扱えるようにしたもの
#### 時系列データ:
- 売上金額や利用者数の変化といった時系列情報を持つデータ
- 自然言語や音声といった順序的な構造を持つデータ
---
### ニューラルネットワーク(NN)
```graphviz
digraph {
graph [
ranksep = 1.1
];
compound=true
rankdir=LR
node [ fontname="Source Sans Pro", fontsize=18];
edge [ fontname="Source Sans Pro", fontsize=12 ];
concentrate=true
a [label="入力層 x"] [shape=box]
b [label="出力層 y"] [shape=box]
hidden [label="隠れ層 h" shape=circle ]
a -> hidden
hidden -> b
}
```
----
### リカレントニューラルネットワーク(RNN)
- 隠れ層の出力を保持する
```graphviz
digraph {
graph [
ranksep = 1.1
];
compound=true
rankdir=LR
node [ fontname="Source Sans Pro", fontsize=18];
edge [ fontname="Source Sans Pro", fontsize=12 ];
concentrate=true
a [label="入力層 x"] [shape=box]
b [label="出力層 y"] [shape=box]
hidden [label="隠れ層 h" shape=circle ]
a -> hidden
hidden -> b
hidden -> hidden[color=red, ]
}
```
---
### RNN2

引用:https://willowtreeapps.com/ideas/an-introduction-to-google-duplex-and-natural-conversations
---
### BackPropagation Through-Time(BPTT)
- 予測した結果と実際の結果との誤差を遡って反映する(誤差逆伝播法)
- RNNでは<b>過去の情報の重みも与えられているので時間軸に沿って遡っていく</b>
---
### cf. RNNで発生しうる問題
- 勾配消失問題
- ニューラルネットワークの層が多くなると伝えるべき誤差が消失してしまう
- ※Google Duplexの場合はタスク内容が狭いため勾配消失問題の影響が少ない
- 入力重み衝突/出力重み衝突
- 現在と関係がなくても将来関係するデータが入力された場合に重みづけが衝突し、打ち消し合ってしまう現象
#### <b>Long Short-Term Memory(LSTM)</b>
- 上記の問題を解決するために考えられた手法
- 隠れ層の構造を変えて、残すべき信号と忘れるべき信号を管理することで長期記憶できるようにする
参考: [自然言語処理について勉強してみた(その4:LSTM) - Re:ゼロから始めるML生活](https://www.nogawanogawa.com/entry/NLP_LSTM)
---
## まとめ
- 音声認識や自然言語処理には時間情報も考慮する必要がある
- <span class="highlight">==リカレントニューラルネットワーク==</span>は時系列データを扱うために再帰的な構造を持ったニューラルネットワークのモデル
- <b>==BackPropagation Through-Time(BPTT)==</b>で重みづけを修正していく
---
## 参考
- [Google AI Blog: Google Duplex: An AI System for Accomplishing Real-World Tasks Over the Phone](https://ai.googleblog.com/2018/05/duplex-ai-system-for-natural-conversation.html)
- [An introduction to Google Duplex and natural conversations | WillowTree](https://willowtreeapps.com/ideas/an-introduction-to-google-duplex-and-natural-conversations)
- G検定公式テキスト
- リカレントニューラルネットワーク 6-5(p167)
- 音声認識・WaveNet 7-3(p205)
{"metaMigratedAt":"2023-06-15T04:28:09.690Z","metaMigratedFrom":"YAML","title":"ディープラーニング × 電話代行","breaks":true,"description":"for \"Slide Mode\".","slideOptions":"{\"theme\":\"white\",\"slideNumber\":\"c/t\",\"center\":false,\"transition\":\"none\",\"keyboard\":true,\"width\":\"93%\",\"height\":\"100%\"}","contributors":"[{\"id\":\"df4f3b1d-21e6-4b5f-a6eb-1e45364294af\",\"add\":11732,\"del\":4713}]"}