働きたくないイタチと言葉がわかるロボット 人工知能から考える「人と言葉」

Twitterを見てまんまと

たまたま著者の宣伝ツイートが目に止まり、即決購入。
自分は著者の「白と黒のとびら」「精霊の箱」が大好きである。
人に分かりやすく伝えることにかなり気を使っているので、飽きずに読めるからだ。(台風の日にピッタリ!)

本書は、

イタチたちが「言葉を理解する」機械をつくるために四苦八苦する童話の世界が展開される。
そして、この「言葉を理解する」とは何かについての(おそらくイタチ達ではなく筆者の)苦悩がよく伝わってくる。

読了して

まず思ったのが人が会話をする機能を機械が同様な形で行うことは、とても遠い未来のように感じた。
最近の手法は、発せられた言葉を文字列に起こし、機械が学習してきた例題に照らし合わせ、一番期待値が高い会話の候補を選択し発話するやり方が一般的。(っと思う。)
一方で、人間は相手の心情や共有している経験や常識、雰囲気等を考慮しながら、言葉を理解し、発話をする。
こういった問題のブレイクスルーはまだまだ難しいと思う。

文字列コミュニケーションの齟齬

上記で述べた問題は、現代の文字列コミュニケーションでの齟齬にも関係することにも言及している。
機械が理解できない情報と同様に、文字列コミュニケーションにはいくつかの情報が欠落し、相手に理解されない。
Twitter等で「発話者の意図」を理解できずに、言い争いやデマの拡散等に繋がることをよく目にする。
人が生まれ持つ会話という機能は、非常に高度技術であることを理解できれば、
情報が欠落した文字列コミュニケーションでは、注意深く発話し、注意深く聞く(見る)ことが必要であると考えるはずだ。


そういった理由もあり、幅広い層に読まれれるべき一冊だと思った。

Unity:SetColorがBuildした後動かなかった話。

問題

モデルをSetColor関数を使用して、動的に色を変更したとき、UnityEditor上のテスト動作時は問題がなかったが、Windows向けビルドした際に表示が行われなかった。

f:id:ThreeStones:20170817225842p:plain
プレイヤーが攻撃したら色が変わるはずだったのに・・・。

流れ

(1) 下記サイトにて_EMISSIONというプロパティを有効にすれば光るマテリアルを設定することができると知る。
Unity5のStandardシェーダのパラメタをスクリプトからいじろうとして丸一日潰れた話 - D.N.A.のおぼえがき

(2) 下記のコードを埋め込む

_render.material.EnableKeyword("_EMISSION"); //キーワード
_render.material.SetColor("_EmissionColor", targetColor); //チーム色に光らせる

(3) テスト実行 
 おっ!きれいに表示された。

(4) ビルドして簡易リリースしよう
 あれ!?色が変わらないだと・・・。

原因

プロパティがビルド時に不要と判断されて読み込まれていなかったため。
(なぜなぜ→色を変更した際に参考にさせていただいたページをよく読んでいなかったことが原因。)

解決

 下記の公式にあるとおり、予めプロパティを設定しておく必要がある。
スクリプトを使用したマテリアルパラメーターへのアクセスと変更 - Unity マニュアル

↓このへんイジイジ・・・。
f:id:ThreeStones:20170817231303p:plain


↓できた!!
f:id:ThreeStones:20170817230938p:plain
 

今後

Emissionというプロパティは一体何なのか・・・。っといまさら。
調べてから使っていこう。