# PyCon TW 2017 Collaborative Talk Notes <br> Day 2 - R2
> ### Quick Links
> - [Portal for Collobration Notes 共筆統整入口](http://beta.hackfoldr.org/pycontw2017/) (hosted by [betw.hackfoldr](http://beta.hackfoldr.org/) and [HackMD](https://hackmd.io/))
> - [Program Schedule 演講列表](https://tw.pycon.org/2017/events/talks/)
> - [PyCon TW 2017 Official Site 官網](https://tw.pycon.org/2017/)
>
> ### How to update this note?
> - Everyone can *freely* update this note. 任何人都能自由地更新內容。
> - Please respect all the participants and follow our [code of conduct](https://tw.pycon.org/2017/about/code-of-conduct/) during discussion. 討論、記錄時,請遵守大會的[行為準則](https://tw.pycon.org/2017/about/code-of-conduct/)
>
### 10:40-11:10 <br> Talk: [How we use Deep Learning to classify more than 80,000 photos a day on PhotoGrid](https://tw.pycon.org/2017/events/talk/341985748934721645/)
- Slider: http://goo.gl/BEzf10
- Speaker: Brad Chang
- ImageNet 有大量有label的圖片,可供圖片辨識用
- 2012 Alexnet 用GPU做了類神經網路,Top-5 Error rate 大幅下降到16.4%
- 2015 ResNet 3.57%
- 2015 [Google InceptionV3](https://github.com/tensorflow/models/tree/master/inception) 3.46%
- Human 5.1%
- ImageNet裡面那些獵豹的label不是我們要的,但我們可以用transfer learning來把電腦學到的經驗轉移到我們需要的領域
- 經驗是可以保留的,我們只需要 Retrain 最後一層(softmax層),前面幾層的weight可以保留
- 想要解決的問題:如何篩掉不適當的照片、推薦客戶合適的圖?
- 作法:準備色情圖片之類不適當的照片並分門別類,作為dataset來retrain並test
- 幾百張的training圖已可以得到可接受的第一版結果
### 11:30-12:15 <br> Talk: [對話機器人的腦子與靈魂 Bot's Brain and Soul](https://tw.pycon.org/2017/events/talk/386517422489731217/)
- Slider:
- Speaker: 陳縕儂
- Intellengence Assistance Architecture
- Reactive Assistance:使用者說了話,機器人做反應
- Proactive Assistance:機器人事先預測使用者需要的資訊,先提醒使用者
- GUI v.s. CUI (Conversational UI)
- GUI: 資訊量較多,操作以點選為主,需要去學習如何操作介面
- CUI: 資訊較精準,操作以文字和語音為主,跟一般對話相像
- Bots 兩大發展分支
- Task Oriented
- 幫助使用者完成任務
- 能快速完成工作較好
- Chit Chat
- 與使用者閒聊
- 能持續聊天越久越好
- System Framework
- Speech Signal → Speech Recognition
- Language Understanding (LU)(Current bottleneck )
- Domain Identification
- Intent Prediction
- Slot Filling
- Dialouge Management(DM)
- State Tracking:不直接追蹤明確的 path,而是透過機率分佈來尋找可能的 path
- Policy
- Generation
- Interaction Example:
- Input: Find a good eating place for Taiwanese food
- Language Understanding:
- Domain identification:
- [V] **Restaurant database**
- Taxi Database
- Movie Database
- Intent detection:
- *eating place*
- Restaurant database:
- [V] **`FIND_RESTAURANT`**
- `FIND_PRICE`
- `FIND_TYPE`
- Slot filling:
- 對於餐廳有一些要求:*good*
- Restaurant database
| Restaurant | Rating | Type |
| --- | --- | --- |
| R1 | Good | Taiwanese |
| R2 | Bad | Thailand |
| .. | .. | .. |
- Dialogue State tracking:
- Requires **hand-crafted** states
- Real case:
- Find a good eating place for Taiwanese food
- Find a good eating place for **taiXXX** food
- **Detail state** 找不到的時候,其實沒辦法決定
- Understanding model可能不夠好
- 說了下一句話的時候state可能還會更複雜
- 大部分的方式:
- 維持一個state的機率分佈
- 不直接追蹤明確的路徑,而是用最有可能的**機率轉換**
- 類似Markov model找最大機率路徑
- Dialogue policy for agent action
- Deep Learning for Dialogues
- IOB Sequence labeling for slot filling:
- 根據每一個node給定一個y
- 透過recurrent neural network
- 把每一個input的字都標出一個y
- Intent classificaiton
- 標完整句話才做使用者意圖的辨識
- Contextual LU
- 前後文的理解
- Supervised vs. Reinforcement
- Supervised:
- 一個問題對一個問題的回答
- 像是老師一題一題交
- Reinforcement:
- Learning from critics
- 碰到問題才會修改回答問題的方式
- e.g.,: 回答十個問題之後發現顧客生氣了
- 最後才回去思考前面哪一步沒有train好
- 要最佳化的目標:最後能夠完成整體的task
- 不知道現在這一步能不能讓最終結果滿意
- 也不知道失敗的時候是前面哪一步做壞了
- 但至少會得到user的reward
- App behavior for understanding
- Challenge: Language ambguity
- e.g., Send message to Vivian
- 用簡訊傳,還是用Email傳?
- Evolutional roadmap
- 希望可以從單一domain延伸到多domain
- 有沒有辦法從舊有domain、或已知domain的information,進行transfer learning到新的domain上?
- High-level intention for dialogue planning
- 根據高階資訊:
- 分割成數個小的task
- 讓bot學會這件事
- Empathy in dialogue system
- 根據使用者的回覆判斷情緒
- 根據情緒當成reward (?)確定有沒有學好
- Conclusion
- 定義Semantic schema
- Cross-domain knowledge
- Human-like dialogue system
- Robustness
- dialogue coverage
- Q: Language Generation要怎麼做Evaluation,怎樣才算是符合文法?怎樣算是合理的回答?
- 判定很主觀
- 很多研究會導入Human Evalutaion
- 目前還是一個Open Question
- Q: 目前關於情緒判斷,是否已經到了Production了?
- 尚未到Production
- 這樣的問題很難做,其中一個原因在於資料很難收集
- 另一個原因是,就算沒有辦法判斷情緒,通常也不會造成太大的問題。不像意圖如果判斷錯誤,就會提供錯誤的服務
### 13:25-13:55 <br> Talk: [鄉民教我做的聊天機器人](https://tw.pycon.org/2017/events/talk/381653012197671055/)
- Slider: [slide傳送門](https://www.slideshare.net/RyanChao3/pycon2017-chatbot)
- Linebot傳送門: https://line.me/R/ti/p/%40nlj2850e
- Speaker: Ryan Chao
- 電影字幕作為資料源
- 資料發散,不容易收斂 => 先過濾出日常用語
- seq2seq => 大部分的回答都是「我不知道」
- PTT 資料源
- 八卦板標題和推文會有應對關係 => 問答
- 發文量大的看板有此特性
- 透過 Django 做爬蟲、機器人的管理
- 檢索引擎
1. 利用使用者輸入比對最像的標題
2. 排序做回應
- Jaccard Simularity
- [BM25](https://read01.com/kG8RON.html)
- 針對重要的字給予較大權重
- tf 對短句比較不好用 => 用詞性作為權重
- 斷詞器
- 結巴(jieba)沒有辦法處理顏文字 => 改善字典
- 加入 PTT 用詞
- word2vec
- 輸入的詞找不到標題 => 用 word2vec 找相似的詞
- 肥宅? => 魯宅
- 如何評估檢索系統
- MAP (Mean Average Precision)
- 需要事前人工標注是否為相關 label。太麻煩
- NDCG (Normalized Discounted Cumulative Gain)
- 用原有標題的推文作為標準答案 => 找到答案的機率太低
- 降低標準,用語意的 Cosine simularity 作為判斷
- [x] doc2vec (gensim)
- [ ] RNN-encoder
- Ranking Consideration
- 推文時間, ...
### 14:05-14:35 <br> Talk: [Why do projects fail? Let's talk about the story of Sinon.PY](https://tw.pycon.org/2017/events/talk/321329184263635026/)
- Slider: [Link](https://www.slideshare.net/ssuser2cbb78/pycon-tw-2017-why-do-projects-fail-lets-talk-about-the-story-of-sinonpy)
- Speaker: Kir Chou
### 16:30-17:15 <br> Talk: [利用 Python 與人工智慧快速打造人性化聊天機器人](https://tw.pycon.org/2017/en-us/events/talk/sponsored/利用python與人工智慧快速打造人性化聊天機器人/)
- Slider:
- Speaker: 吳志忠
- [Source code](https://git.ng.bluemix.net/tommywu/pyconbot2017/blob/master/run.py)
### 17:25-18:10 <br> Talk: [Chatbot @ E.Sun Bank – 玉山小i 隨身金融顧問的兩三事](https://tw.pycon.org/2017/en-us/events/talk/sponsored/chatbot-esun-bank-玉山小i-隨身金融顧問的兩三事/)
- Slider: [Link](https://drive.google.com/file/d/0B8hlay_yY5e7QTE0U3JDUXloeXM/view)
- Speaker: 林鉦育
- [Source code](https://github.com/ntuaha/Py_FBM)