【論文メモ】Neural Attention Modelを用いた観点付き評判分析
論文名
柳瀬利彦, 柳井孝介, 佐藤美沙, 三好利昇, 丹羽芳樹: Neural Attention Modelを用いた観点付き評判分析, The 30th Annual Conference of the Japanese Society for Artificial Intelligence, 2016.
どんなもの?
- Neural Network の一種である Neural Attention Model [Luong 15] を用いた観点付き評判分析の方法を提案
- [Luong 15] Luong, T., Pham, H., and Manning, C. D.: Effective Approaches to Attention-based Neural Machine Translation, in Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing, pp. 1412–1421, Lisbon, Portugal (2015), Association for Computational Linguistics
- 通常の評判分析と異なり本タスクでは,観点に対応する文中の表現を特定することが必要
先行研究と比べてどこがすごい?
技術や手法のキモはどこ?
Neural Network の一種である Neural Attention Modelを、観点付き評判分析に応用
どうやって有効だと検証した?
ABSA2015 データセットを用いた評価で従来の最も高い精度を実現したチームと同等かそれ以上の精度を実現した.
議論はある?
今後の課題として,日本語を含めた多言語への応用を考えている.
次に読むべき論文は?
[Luong 15] Luong, T., Pham, H., and Manning, C. D.: Effective Approaches to Attention-based Neural Machine Translation, in Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing, pp. 1412–1421, Lisbon, Portugal (2015), Association for Computational Linguistics
【10月27日Version2対応】Pythonで活性化関数Swishを書く
以下の記事の続きです。
upura.hatenablog.com
10月27日にVersion2が公開されていたので、ブログも対応して修正します。Figure4に当たります。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt beta = [0.1, 1.0, 10] def sigmoid(x): return 1.0 / (1.0 + np.exp(-x)) def swish(beta, x): return x * sigmoid(beta * x) n = 1000 x = np.linspace(-5, 3, n) y = [[] for i in range(len(beta))] plt.title("Swish") for i in range(len(beta)): y[i] = swish(beta[i], x) plt.plot(x, y[i], label = "β=" + str(beta[i])) plt.legend(loc="upper left") plt.show()
強化学習Q-learningで、ダチョウ倶楽部の「熱湯風呂」ができるAIを育成してみた
出典:ORICON News
AlphaGo Zeroで話題になった強化学習の復習として、Q-learningで、ダチョウ倶楽部の「熱湯風呂」ができるAIを育成してみました。
目的
- "押すなよ"を与えられた際には押さず(stay)、"絶対に押すなよ"を与えられた際には押す(push)ように育成
- 直接if文で書き込めば一発だが、今回は強化学習の勉強なので、無理やり枠組みに落とし込む
設計と学習
actionとstatusは以下のように候補を与えます。actionとしては「押す(push)」「押さない(stay)」、statusとしては「湯船の中(in)」「湯船の外(out)」があります。最初のstatusは"out"です。
action = ["stay", "push"] status = ["out", "in"] current_status = "out" text = ["押すなよ", "絶対に押すなよ"]
またq_scoreとしては、以下を与えます。
keys = list(itertools.product(action, status, text)) values = [0 for i in range(len(list(itertools.product(action, status, text))))] q_score = dict(zip(keys, values))
そして、以下のコードを用いてランダムに"押すなよ"か"絶対に押すなよ"を与え、学習させていきます。
報酬は、"絶対に押すなよ"で押せば10点で押さなければ-1点、"押すなよ"で押してしまったら-10点
取りあえず1000回試行しました。
def decide_act_softmax(current_status, target_text): pi = [1/len(action) for i in range(len(action))] sum_q = 0 for i in range(len(action)): sum_q += math.exp(q_score[(action[i], current_status, target_text)]) if sum_q != 0: for i in range(len(action)): pi[i] = math.exp(q_score[(action[i], current_status, target_text)])/sum_q decided_action = random.choice(action, p = pi) print(decided_action) return decided_action def decide_next_status(decided_action): if decided_action == "stay": next_status = "out" else: next_status = "in" return next_status def calc_reward(target_text, decided_action): if target_text == "絶対に押すなよ": if decided_action == "push": r = 10 else: r = -1 else: if decided_action == "push": r = -10 else: r = 1 return r def q_learning(decided_action, current_status, next_status, r, target_text): max_q_score = -10000000000 for act in action: if q_score[(act, next_status, target_text)] > max_q_score: max_q_score = q_score[(act, next_status, target_text)] q_score[(decided_action, current_status, target_text)] \ = (1 - ALPHA) * q_score[(decided_action, current_status, target_text)] \ + ALPHA * (r + GAMMA * max_q_score) return 1 def set_current_status(decided_action): if decided_action == "push": global current_status current_status = "in" return 1 def challenge(target_text): global current_status if current_status == "in": current_status = "out" decided_action = decide_act_softmax(current_status, target_text) next_status = decide_next_status(decided_action) r = calc_reward(target_text, decided_action) q_learning(decided_action, current_status, next_status, r, target_text) set_current_status(decided_action) # Training for training in range(1000): if random.random() > 0.33: challenge("押すなよ") else: challenge("絶対に押すなよ")
1000回後のq_scoreは以下の通りです。望ましい方向に学習できていると分かります。
検証
検証として、以下の3回での挙動を確認してみます。
# Test challenge("押すなよ") challenge("押すなよ") challenge("絶対に押すなよ")
結果は下記の通り、うまく動作していると分かります。
stay stay push
【論文メモ】国会会議録を用いたディベート人工知能による意見生成
論文名
佐藤美沙, 柳井孝介, 柳瀬利彦, 是枝祐太, 丹羽芳樹: 国会会議録を用いたディベート人工知能による意見生成, The 31st Annual Conference of the Japanese Society for Artificial Intelligence, 2017.
https://kaigi.org/jsai/webprogram/2017/paper-860.html
どんなもの?
ディベートにおける立論文章生成を目的としたソフトウェアのデモンストレーション展示を行う。聴講者は「カジノを合法化すべきか」のような任意の論題を入力し、賛成・反対両方の立場からの意見文章を出力させることができる。データソースとして国会会議録データベースを利用し、会議発言を元に意見文章を生成する手法を提案する。また提案手法の評価結果について報告する。
先行研究と比べてどこがすごい?
先行研究では,賛否の別が検討されていなかった.そこで本研究では,ディベートの枠組みで賛否の区別を扱い,ユーザから入力された多様な議題に対して,論じる観点を決定し,会議録から理由や根拠の文を自動抽出することで賛否両方の立場から意見を組み立てることをめざす.
技術や手法のキモはどこ?
ディベート人工知能における意見生成とは,議論の対象が価値を増減させることを指摘し,その根拠を示すこと
- 意見を論じる観点を価値観に基づいて決定する価値決定
- テキスト文が根拠としてもっともらしいかを推定するための文の根拠性認識
議論はある?
手法やデータセットによる出力の違いの分析は今後の課題
【論文メモ】企業経営における意思決定支援のためのイベント抽出
論文名
柳瀬利彦, 柳井孝介, 丹羽芳樹, 村上聡一朗, 渡邉亮彦, 宮澤彬, 五島圭一, 高村大也, 宮尾祐介, 中田亨: 企業経営における意思決定支援のためのイベント抽出, The 31st Annual Conference of the Japanese Society for Artificial Intelligence, 2017.
https://kaigi.org/jsai/webprogram/2017/paper-66.html
どんなもの?
本研究は,企業の意思決定において,過去の類似した状況において下された経営判断をエビデンスとして活用することを目標とする。本論文では,特に過去の経営判断の抽出に注目し,新聞記事からのイベント抽出として問題を定式化する。そして,自動抽出に向けたデータセットを整備し,教師あり識別器を用いた実験による精度評価を実施する。
先行研究と比べてどこがすごい?
「イベントを,動作主となるエンティティと,何が起こったのかを表す述部の組として表現」する先行研究の手法に則り、企業経営というドメインに適したデータセットを人手で新たに開発した。このデータセットを用いて,教師あり学習による自動抽出方法を評価し,完全な自動化に向けた課題を議論した。
技術や手法のキモはどこ?
作成したデータベース(「経営判断」を含む818文)について、以下2種類で教師あり学習。
- Bag of Words + Linear SVM
- fastText(Neural Network)
どうやって有効だと検証した?
Majority Baseline(Recallが100%になるように抽出)と比較
議論はある?
データベースが小さいので、拡充する必要がある。
次に読むべき論文は?
関連研究
これまで,人や組織のイベント [Tannier 13, Minard 15],商品やサービスのイベント [阿部 09],タンパク質の反応に関するイベント [Kim 13] などを対象に,テキストからのイベント抽出が研究されてきた.
- [Tannier 13] Tannier, X. and Moriceau, V.: Building Event Threads out of Multiple News Articles, in Proceedings of the 2013 Conference on Empirical Methods in Natural Language Processing, pp. 958–967, Seattle, Washington, USA (2013)
- [Minard 15] Minard, A.-L., Speranza, M., Agirre, E., Aldabe, I., Erp, van M., Magnini, B., Rigau, G., and Urizar, R.: SemEval-2015 Task 4: TimeLine: CrossDocument Event Ordering, in Proceedings of the 9th International Workshop on Semantic Evaluation, pp. 778–786, Denver, Colorado (2015)
- [阿部 09] 阿部 修也, 江口 萌, 隅田 飛鳥, 大崎 梓, 乾 健太郎:みんなの経験:ブログから抽出したイベントおよびセンチメントのDB化, 言語処理学会 第15回年次大会 (2009)
- [Kim 13] Kim, J.-D., Wang, Y., and Yasunori, Y.: The Genia Event Extraction Shared Task, 2013 Edition - Overview, in Proceedings of the BioNLP Shared Task 2013 Workshop, pp. 8–15, Sofia, Bulgaria (2013)
【論文メモ】多様なデータソースを活用するディベート型人工知能のための自然言語を核とするデータ表現
論文名
柳井孝介, 佐藤美沙, 柳瀬利彦: 多様なデータソースを活用するディベート型人工知能のための自然言語を核とするデータ表現, The 31st Annual Conference of the Japanese Society for Artificial Intelligence, 2017.
https://kaigi.org/jsai/webprogram/2017/paper-590.html
どんなもの?
多様なデータソースを活用し,多様な機能を実現するためのシステム設計について論じる。本稿では,統一的なシンボルやスキーマ,タクソノミを用いず,自然言語を核とした知識表現に基づいてシステムを構築する方法論を提案する。またプロトシステムを実装し,その効果を検証する。
先行研究と比べてどこがすごい?
これまでは,テキストから根拠を示す文を抽出するための根拠性認識に注力してきたが,本稿では別のアプローチとして,多様な分析機能を持つようにすることを検討する。具体的な例として,「X 社に投資すべきか」という論題を考える。この場合,これまでと同様に,過去のニュース記事や白書を解析して賛否の根拠を出すのに加えて,X 社の売上高のデータを過去10 年分集めて,上昇傾向にあるか下降傾向にあるかを提示することで,より効果的な経営判断の材料になると考えられる。
従来の設計手法の問題点
- 単語「売上」の同一性
- 不完全なデータの扱い
- スキームに関わるコスト
技術や手法のキモはどこ?
本稿では,ロジックを自動的に習得する方法を考える替わりに,最初のステップとして,ロジックは人が考案して実装するものと仮定して,多数の分析ロジックを実装できるようなシステムの設計方針を考察する。
上記の問題点については、下記のように対応する。
どうやって有効だと検証した?
プロトシステムの実装
議論はある?
- 定量的な評価方法の確立
- 機能数の増加後の提案モデルの検証
- ロジックを自動で学習できる仕組みの考案
【論文メモ】日本語単語ベクトルの構築とその評価
論文名
吉井和輝, Eric Nichols, 中野幹生, 青野雅樹: 日本語単語ベクトルの構築とその評価, 研究報告音声言語情報処理(SLP), 2015-SLP-106, 4, pp.1-8, 2015.
概要
- 本研究では,単語の類推 (word analogy) と文完成 (sentence completion) の二つの評価タスクを用い,著名なオープンソースツールである word2vec (gensim の再実装) と GloVe を用いて構築した日本語単語ベクトルの評価を行った.
- 単語の類推タスクでは,英語データで公表されている結果に近い結果を得たが,文完成のタスクでは,精度が大幅に減少した.
- 本稿では,両タスクのエラー解析で明らかになった英語の単語ベクトルと日本語の単語ベクトルの性能差や,日本語特有の問題について調査した結果について述べる.
先行研究との差異
- 単語ベクトルは,統計的自然言語処理で利用しやすい分散意味表現として近年盛んに用いられるようになってきたが,今まで主に英語で評価されてきたため,英語以外の言語での有効性は不明である.
- 日本語と英語では使用する字種数,語順,文法などに大きな差が存在するため,日本語にこれらの手法を適用できるかは十分な検討が必要となる
有用性の検証
単語類推タスクと文完成タスクで検証。前者では(男・女)という単語ペアから、(王・?)の?で女王を当てる。後者は日本語のテストの問題を活用。いろいろな手法での精度を求めた。
議論
定量的な結果の中身を、定性的に分析。日本語ならではのtipsがいろいろ。
次に読む
なし。