Reflection 〜とあるIT研究者の内省録〜

AIを始めとするIT技術は、人間の思考を投影し具現化する。台頭するAIの時代に、どう生きるか?とあるIT研究者が綴る、リアルな生存戦略レポート。

ツイッターを活用した自然言語処理(前編)〜自分と相性の良さそうな(きっと可愛い)アイドルを真面目に探してみる〜

どうもMakです。突然ですが、皆さんはツイッター使ってますか?

ご存知ツイッターは140文字という制限文字数内で自由にインターネット上に発信できるSNSです。同じSNSFacebookと比較しますと

  • Facebook・・・実名・顔写真あり・友人関係は相互フォローが基本
  • Twitter・・・匿名・複数アカウントOK(なので容易に仕事とプライベートでアカウントを分けたりできる)、また友人関係も一方向のフォローだけでOK

というような違いがあります。この結果何が生まれたかというと、Facebookは関係性の近さから息苦しさを覚える人が増え、ユーザーの離脱に繋がりました(例えばFacebookで職場の人とつながっていれば、不用意な発言はできないし、でもいいねやコメントは返さないといけないし・・・など気疲れする要素が多かったのです)

一方でツイッターは、一時期はFacebookSNSの主役の座を完全に奪われていたかのように見えましたが、近年はその「関係性の緩さ」ゆえの居心地の良さが幅広い世代の共感を集め、再度勢いに乗っているように感じられます。

さて、実はこうしたSNSへの投稿は、その人が本来持っている、性格や考え方、思想と言ったものが現れやすいことが心理学的にも分かっています。

・・・と、いうことはですよ。

例えば、もしあなたが少し気になっている異性がいたとして、「その人のことを知りたい!」と思ったとしたら、直接ご飯に誘うのは、ちょっと考えものなのです。
だって、イタリアンのレストランなんかに行って見たところで、「あの、その、ご趣味は・・・」となるのが関の山な訳です。自分も相手も、5匹か10匹くらい猫を被っていること間違いなしです(断定)

で、そこで、なんですよ。

もしTwitter自然言語処理で、相手の興味のあるトピックを瞬時に見抜いて、同時にあなたとの相性を測れてしまうとしたら。結構面白いと思いませんか??

ただ、この方法には一つ決定的な穴が・・・
「お相手のTwitterアカウントがわからなければ、何もできません(笑)」
なので、ここはお相手のご友人にご飯おごったりゴマをすったり土下座したりとにかくなんとかして、お相手のアカウントは確保してください(笑)

すみません。少し妄想が行きすぎました。
話を戻しますが、実際にTwitterのデータというものは特に感情を内包する言語資源としては非常に貴重で、自然言語処理では研究対象として近年注目を集めている分野です。

と言うことで、今日はTwitter自然言語処理で少し面白いことできないかな〜という、「試してみた」系の日記になります。

食材を集める(データの収集)

ã½ã¼ã¹ç»åã表示

新しいTwitter API規約の確認とデベロッパー登録をする

さあ始めましょう。まずはデータです。このブログでも常々口が酸っぱくなるようにデータの重要性を謳っていますが、データ集めが本当にキモだったりします。
で、データを集めていると、(ほぼ必ずと言っていいのですが)何かしらの壁にぶつかります。これは例えば、取れると思っていたデータが、APIが厳しくなって取れなくなっているよ!というように、「データ量に関する問題」だったり、取ってみたらガラクタばかりじゃねぇか!というように「データの質に関する問題」だったり、まぁいろいろな問題が立ちはだかるはずです(汗)

ですが問題ばかりではありません。実際にデータを眺めてみることで、当初は思いつきもしなかったアイデアを思いついて妄想(?)が広がったり、意外な発見があったり、宝探し的な要素も含むのがこの辺りの醍醐味です。

では具体的にTwitterのデータを取ってみることにしましょう。
と思ってTwitter APIの規約を調べてみると、案の定!去年秋よりTwitter APIの規約が厳しくなり、時間あたりで取得できるデータ量にかなりの制限が加わっていたようでした。

ツイートとリツイート(合算値):3時間で300件
いいね:24時間で1000件
フォロー:24時間で1000件
ダイレクトメッセージ:24時間で1万5000件

さらに、Twitterデータを利用するにはデベロッパー登録というものが必要なのですが、これも申請が少し面倒になっていました(例えば利用用途について300字以上の英作文が必要など)

上記のAPI制限及びデベロッパー登録については以下のブログを参考に進めました。

www.torikun.com

ツイッターアカウントの収集

無事デベロッパー登録が完了したら、早速ツイートデータを収集してみましょう。
今回は、テスト的に、「過去のツイートを元に、筆者と最も相性の良い芸能人(きっと可愛い)を見つける」をゴールとします。

人類75億の中で筆者1人しか得をしないという、まさに誰得な企画ですね。誰が当たるかな。ガッキーかな。深キョンかな。にやつきが止まらない。今世界一きもいと思います。笑

で、対象とする芸能人をどうするかですが、これは対象がTwitterをやっていることが前提です。おそらく、人気の女優さんはフォロワー数もきっと多いですからね。これは自分で探すまでもなく、すでにまとめてくれているサイトがありそうだな、と思ったらこちらにありました。

【グラビア・アイドル・モデル】の人気Twitter(ツイッター)ユーザー一覧(タイトルと画像)

ふむふむ、アイドル部門でのフォロワー数1位はローラですか。2位は広瀬すず、3位は小島陽菜 と。4位の篠田麻里子さんは最近、玄米食べて育った美容師さんと結婚してしまいましたからね。もうランク外でも良いでしょう(←こら

などとしょうもないことを考えているとデータ集めが永遠に終わらないので、少し効率化します。以下のような簡単なコードを書けば、ポチポチとツイッターアカウントをコピペする手間が省けます。BeautifulSoupは強い味方。

#リスト収集

import urllib
from bs4 import BeautifulSoup
import requests

url = "https://meyou.jp/popular/idol_title/"
html = requests.session().get(url).text
soup = BeautifulSoup(html, 'lxml')

users = []
for elem in soup.find_all("span",class_="author-username"):
    users.append(elem.a.string[1:])

今回はあくまでテストなので、「アイドル」「(芸人含む)有名人」「アーティスト」の3ジャンルに絞り、各ジャンルで100人分、合計300人のツイッターアカウントリストを作りました。

収集したアカウントの、過去のツイートを収集

さて、次は収集したアカウント名を使って、過去のツイートを収集します!
これには、先ほど登録したTwitter APIを使ってみることにします。

ここは一からプログラムかかなあかんかなぁ、と思ったのですが
やはり偉大な先達により、この部分のコードをお借りすることができました。

qiita.com

1点だけ変更したのは、上記サイトで使われているAPIのURL部分で、
user_idをscreen_nameに変更します。取得したのはアカウント名なので、screen_nameにしないと上手く取得できません。

API制限が気になりましたが、特に問題なく一人当たり100件のツイートを300人分、取得することができました。後工程を考えるとデータ量が圧倒的に不足しそうですが、まぁ今回はテストですからね。

包丁を選ぶ(モデルの選択)

さあ、食材の用意が整ったので調理を始めていきましょう。
再度、ゴールと現在地を確認します。

  • ゴール:「筆者と最も相性の良い芸能人を見つける」
  • 用意したもの:有名人300人分の過去ツイート100件+筆者の過去ツイート100件

ここでどの包丁を使うかを決めていくのですが、今回は「LDA」なるものを使っていきます。LDAとはLatent Dirichlet allocation(潜在的ディリクレ配分法)なるもので、自然言語界隈ではニューラルネットワークが全盛になるちょっと前くらいに一世を風靡した技術になります。詳細はまたエネルギーがある時に書きたいのですが、一文でまとめるとしたらこうです。

ニューラルネットワークは性能でるけど、肝心要めの隠れ層の重みの解釈が人間には不可能でブラックボックス」というデカい欠点があるのに対して、LDAなどのトピックモデルは「重みの次元が何らかのトピック(話題)を表していて、結果が人間に解釈可能」という大きな強みがあるわけです。

今回は精度を出すよりも次元の説明ができた方が圧倒的に面白そうなので、LDAを選択しました。ただ、データ量が足りるかどうか、ちょっと自信がありません。が、まぁやってみましょう。

少し長くなりそうなので、今日はこれくらいで。後編はまた明日分として、記事を分けて公開したいと思います。筆者の運命やいかに!!

生きてますよー

こんばんは。遅くなってしまいました。

花金はサクッと帰ってから少しプログラムをつらつらと書いて、有名人の方々のツイートを収集しておりました。

これを使って何をするかは、またの機会にゆっくり書けたらいいなと思います。

というところで完全に生存報告的な投稿になりましたが。

みなさま良い週末をお過ごしください!!

ワーキングメモリは鍛えられるのか?〜N-Backだけではワーキングメモリが鍛えられない理由とは〜

こんばんは。最寄りのスタバが1ヶ月くらいリフォームのため休店していたのですが、完了したとのことで、来てみました。いや、この日を密かに楽しみにしていたんです。

頭の中ではビフォーアフターの「匠」が流れる中、期待に胸を膨らませてスタバのドアを開けてみると、そこは!

!?!?

え、何が変わったの??新手の間違い探し??

と、よく見ると、なんと、コンセントにカバーがかかって使えなくなっているではありませんか。

はい。リフォームとは名ばかりの、電源コンセントが軒並み撤去された素敵空間へと変貌しておりました・・・

さらにはカウンターなどのスペースが露骨に削られ、使い勝手の悪い円卓テーブルが詰め込まれておりました。

わかる、わかるんですよ。カウンターに座るのは、まぁ大抵長居する学生さんや社会人で、客単価が低いってのはそりゃーわかるんです。でもねぇ。もうちょっと他にやり方なかったかと。。

「なんということでしょう」という声がこだまして頭から離れません。Makです。
ちょっと愚痴りたくなり、長くなってしまいました。すみません。。

さて、先日はワーキングメモリについての記事を書きました。

mak-japan.hatenablog.com

この記事では、

  • 海馬-歯状回の相互作用から生じる神経細細群の活動が、ワーキングメモリに重要
  • ワーキングメモリを鍛える場合は、「学習の転移」が重要なポイント。

という部分まで書きましたが、実際にワーキングメモリを鍛えることができるのか?については未調査でした。

そこで今日は、ワーキングメモリを鍛えることができるか?について、最新の論文をリサーチしたので共有します。少し長くなってしまいましたが、最後あたりから、面白くなると思います。

ワーキングメモリは鍛えられるのか?

ã½ã¼ã¹ç»åã表示

ワーキングメモリを鍛える有名な方法は幾つかありますが、一番有名なのはN-Backというものでしょうか。3*3の9マスくらいを、2秒くらいで文字と場所のセットがランダムに変わっていくのですが、それを頭の中で記憶しておいて、N回分遡って文字か場所の位置が一緒かどうかを当てる、というようなゲームです。文字だとなんのこっちゃですよね。笑

N-backを試したことがある方はわかると思うのですが、このゲームものすごく退屈なんです。笑 ところが、N-Backは、2011年のミシガン大学の研究*1 などにより、ワーキングメモリの強化に効果があるのでは、ということで一気に有名になった経緯があるんです。ただし重ねて説明しますが、全く面白くないゲームです、はい。笑

で、ここでやはり気になるのは、こうしたゲームで本当にワーキングメモリを鍛えられるのか?というところだと思います。

自分が調べたのは2015年以降の研究ですが、やや悲観的な結論に至っている研究が多い印象です。本日ご紹介したい論文はこちら。

f:id:mtstorm2:20190221203016p:plain

https://journals.sagepub.com/doi/pdf/10.1177/1745691616635612

オスロ大学、パデュー大学による研究報告です。タイトルは意訳すれば
「ワーキングメモリーのトレーニングは、(トレーニングと離れた分野への)学習転移や知能向上には繋がらないことが、メタアナリティックな研究によりわかったよ」ということで、早速期待を打ち砕かれそうな内容となっております・・・笑

長い論文なので、要所要所を掻い摘んで読んでいきたいと思います。

ワーキングメモリの基礎

  • 流体知能とワーキングメモリの変動には関連性があるとする研究や、ワーキングメモリの制限が多様な高次認知機能(読解力、言語力、数学力など)に制約を課していると主張する研究がある。
  • 上記の考え方によれば、ワーキングメモリが改善されれば、上限となっていた制約がなくなるわけだから、読解力や数学力などもアップするはず。つまり、遠い学習転移が起こるはずである。
  • 遠い学習転移の例としては、例えば、ある一連のゲームを約10時間プレイすることで子供の知能テストの得点を向上させることができるか?というもの。多くの研究者がそのような効果を確認しようとしてきた。

この論文でフォーカスしている質問

  • 【近距離の学習転移の有無】テストがトレーニングと同一のものか、または非常に近いときに、効果があるかどうか
  • 【遠距離の学習転移の有無】非言語スキルのテスト(法則性を見つける問題)や言語スキルのテスト(言語能力、単語の解読、読解力、算数)のパフォーマンスを向上させるかどうか

従来の研究手法の問題点

  • 比較対象である、対照群(トレーニングを行わない)の設定が不十分。トレーニング以外の要因の影響を受ける可能性があるため。
  • 実験のグループ規模が小さい。
  • ベースラインに不均衡がある場合の考慮がされていない。
  • 出版バイアス(研究結果にインパクトを持たせるため、効果のある変数やデータのみを意図的に利用しようとすることで生まれるバイアス)

本論文での研究手法

87の論文&書籍、145の比較実験を含む大規模なメタアナリシスにより、上記の問題点を解消した上で、

  • ワーキングメモリ(WM)の尺度を
    (a)近い学習転移(訓練された課題と類似の試験)
    (b)中間の学習転移(言語WMおよび視空間WM)
    (c)遠い学習転移(非言語能力、言語能力、読解力、単語解読能力、または算術能力)
    にわけた。
  • 結果に影響を与えると考えられるモデレータ変数として、以下を考慮
    年齢、トレーニング量・・・etc など

結果

実験結果を要約すると、以下の図が得られた。
見方は、右に行くほどトレーニングの効果が高く、また上に行くほど遠い転移学習であることを示します。

f:id:mtstorm2:20190221221652p:plain

上の要約図を、学習後短期での効果と、学習後長期での効果に分けて詳細を記した表をAppendixとしてページ下部に貼り付けておきますので、詳細が知りたい方はそちらをご参照ください。実験結果の結論として、

遠い学習転移(非言語能力、言語能力、読解力、単語解読能力、算術能力の向上)は起きたか?

  • 短期、長期ともに、統計的に有意な学習の効果は見られなかった
    (見られたとしても、先行研究の方法に不備があった可能性が高い。Appendix参照のこと)

中間の学習転移(言語WMおよび視空間WMの向上)は起きたか?

  • 短期では言語WM及び視空間WMともに、統計的に有意なトレーニング効果が観測
  • 長期では、言語WMでは対照群が能動的・受動的により、別れる結果に。
  • なお視空間WMに関しては、対照群に関わりなく、統計的有意な学習効果が継続
  • 中間の学習転移は、成人よりも、小児および高齢者のトレーニング効果が有意に大きい

近い学習転移(訓練された課題と類似または同一のタスクの成績向上)があったか?

  • 短期・長期ともに、統計的に有意なトレーニング効果が観測
  • 能動的対照群では、成人と高齢者のトレーニング効果が、小児より有意に大きい

ディスカッション

ワーキングメモリ容量と流動知能との間には強い関係があることを考えると、ワーキングメモリトレーニングから非言語的および言語的能力への学習転移がないことは一見驚きである。

これは、ワーキングメモリと流動知能との間に因果関係がないという事実を単に反映しているかもしれない。しかし、ワーキングメモリ容量と流動知能は約50%の共通分散を共有していることを考えると、疑問である。

あるいは、この結果は、ワーキングメモリ容量の個人差が多面的であるという事実を反映しているかもしれない。例えば、ワーキングメモリ容量の個人差のある著名な見解によれば、個々のものは次の点で異なる。

(a)ワーキングメモリ(一時記憶)に保持できるアイテムの数。

(b)長期記憶(二次記憶)内のアイテムを戦略的に検索する能力。

(c)目標に従って注意を制御する能力(注意制御)

ワーキングメモリ容量と流動知能との間の関係を完全につなぐためには、上記3つの変動要因(一次記憶、二次記憶、注意制御)がすべて必要であることが実証されている

ここで考えるべきは、現在ワーキングメモリのトレーニング手法として主流となっているN-backのようなタスクを繰り返し実践することが、これら3つのワーキングメモリー容量のいずれかまたはすべての変化につながる可能性がどれくらいあるか?ということである

仮に、繰り返しNバックを練習しても、その効果が集中力の改善しかもたらさないのであれば、知能スコアを向上させるには十分ではないかもしれない、ということである。

結論

  • この研究の結果を持って、ワーキングメモリーレーニングが知能や認知能力の改善に全くの無意味である、結論付けることはできない、だがしかし。。
  • これまでのところこの分野における多くの努力は残念な結果に終わっている。我々は単純な記憶作業を繰り返し練習することが、ワーキングメモリの増加につながる可能性は低いことを示唆している、と考える。
  • レーニングと近い分野での転移の可能性が高い(逆に、遠い転移は起きづらい)ことを考えると、標に近い分野で特定のスキルをトレーニングする方が、現在のワーキングメモリーレーニング方法より実りがありそう。

Appendix

f:id:mtstorm2:20190221235445p:plain

短期でのワーキングメモリーレーニングの効果

 

f:id:mtstorm2:20190221235557p:plain

長期でのワーキングメモリーレーニングの効果(訓練後5ヶ月後)
  • N-Backトレーニングは、Treated Controlを対照群として用いた研究において、非言語的能力(g = 0.15、p = 0.02)に対して有意な効果を示すが、この研究には幾つかの欠点がある(1.サンプルサイズが小さい。2.非言語テストに1種類のテストのみ使用、3. テスト前後において、対照群が、論理的な説明のつかない成績の下落を示すなど)。これにより効果サイズが大きくなっている可能性。
  • 長期でのトレーニング効果で、算術(Arithmetic)が有意となっているが、これは2つの研究(Alloway、Bibile、&Lau、2013年; Nussbaumer、Grabner、Schneider、&Stern、2013年)の3回の比較によるものであり、これらの研究を除外すると、効果の大きさはごくわずかである。

 

ワーキングメモリとは

どうも、絶賛胃腸炎のMakです。初めてかかったのですが、なかなかしんどいですね!

さて、今日は前回書いた記憶の続きということで、「ワーキングメモリ」について少し書いてみたいと思います。

ワーキングメモリとは

ã½ã¼ã¹ç»åã表示

ワーキングメモリ (working memory:作業記憶,作動記憶) とは,短い時間に心の中で情報を保持し,同時に処理する能力のことを指します。

ワーキングメモリは、脳内の作業机で例えられることが多いです。
作業机が大きければ、多くの情報を作業机に置いて作業できるので、情報をいちいち本棚まで探しにいく必要がありません。このため、いろいろな物事を能率的にこなすことができる、というわけです。

パソコンの中にも、ハードディスクとメモリーは分かれていますよね。我々の脳の中でも似たような構造があるのではないか、と考えられるわけです。ところが、このワーキングメモリについては、まだ未解明のことが多いです。そもそも本当にワーキングメモリは存在するのでしょうか?研究者の中でもその見解は分かれます。例えば、Cowan (2005) は、ワーキングメモリを独立したシステムではなく、長期記憶の一部(長期記憶のうち活性化している部分がワーキングメモリ)だと考えています。

しかし、最近の研究では、ワーキングメモリは長期記憶と異なる部位や神経回路を利用していると見ているものが多い印象です。例えば以下の記事にあるように、東京大学は2018年1月にワーキングメモリに関する最新の研究結果を報告しています。

news.mynavi.jp

この研究の発見としては、

  • 従来ワーキングメモリは、前頭皮質大脳基底核などの脳領域が重要と考えられてきた。
  • 一方、海馬とその近傍の歯状回といった脳領域は、過去に起こった出来事の長期的な記憶(エピソード記憶)には重要であることが知られていたが、作業記憶との関連については解明されていなかった。
  • 迷路課題を解くラットから脳活動を記録して解析した結果、海馬-歯状回の相互作用から生じる神経細細群の活動が、ワーキングメモリに重要であることが示された。

というところで、先日紹介した理研の研究とも一致します(理研の研究でも、学習時や学習後1日など短期記憶では海馬が重要な役割を占めていた)

というところで、近年の研究では、ワーキングメモリは本当に人間の脳内には存在しており、しかもそれは海馬や歯状回のあたりに存在している、というあたりまでが解明されてきたと言えそうです。

ワーキングメモリは鍛えられるか?

ということで、次の関心事は、ワーキングメモリって鍛えることができるの?というところではないでしょうか?ワーキングメモリを大きくすることができれば短期記憶と情報処理の両面で効果があると考えられるため、脳のリソースをより有用なものに振り分けることができると言えます。

ここで重要なのが、「学習の転移」という概念です。

例えば、将棋のプロは局面局面で盤面を記憶し、何十手先まで頭の中で将棋の駒を動かして思考できると言われています。常人からすると考えられないような記憶能力を持っていそうなものですが、実は将棋以外の部分での記憶力は他の人と大差ないと言われています。事実、盤面も完全にシャッフルされた状態では、プロの棋士でも覚えるのは困難と言われています。あくまで将棋という環境の中で、流れがあるからこそ、盤面を覚えて何十手先を考えることができる、というわけです。

このように、どれだけワーキングメモリをトレーニングで上げようとしても、その環境以外ではトレーニングの成果が生かしづらい場合、「学習の転移が起きない」と言えます。

まとめ

  • 海馬-歯状回の相互作用から生じる神経細細群の活動が、ワーキングメモリに重要
  • ワーキングメモリを鍛える場合は、「学習の転移」が重要なポイント。

Androidアップデート後、データ通信が極端に遅くなる問題(Nova3)

どうもMakです。去年の12月にスマートフォンをNova3に機種変しました。
今何かと騒がれているファーウェイ製なのですが、高機能で端末も非常に使いやすくとても気に入っておりました。

ところがおとといくらいから、データ通信に尋常じゃないほど時間がかかるように。。最初はネットワーク障害が起きたのでは、と感じる程の遅延だったのですが、同じ通信会社のスマホを使っている同僚に確認したところ、特に問題なく通信できるとのこと。

それからあれこれと調査を進めたところ、どうも数日前に実施したAndroid 9へのOSアップデート(ビルド番号 9.0.0.170)してから、データ通信周りに問題が発生した可能性に行き当たりました。そこでAndroid9のアップデート絡みの不具合を調べていると、SonyXperiaWifiに繋がらなくなる、と言う問題が多発していることを確認。この問題の原因は、Android 9.0でデフォルト搭載された新機能、「Wi-Fiを自動的にONにする」が原因の可能性もありそうです。

sumahoinfo.com

ただ、自分の端末ではWifi接続には全く問題がなく、データ通信に問題があるようで、ピンポイントでの解決策には行き当たらず。

ところで、AndroidなどOSのアップデート時に不具合が起きるのは案外よくある事象らしく、スマホを初期化して購入時の状態に戻せば問題が解消される可能性が高いとの情報もありました(初期化しても、消えるのはデータやアプリなどで、Android OSのバージョンは戻されず最新を維持できるらしい)。

しかし。。
スマホの初期化→復元は途方もなく時間かかるので、できることなら、避けたい!

ということで、ダメ元で、通信設定だけ初期化してみることにしました。
結果、幸いにもデータ通信の問題はかなり解消されたので報告します。
(かなり、と書いたのは以下の理由によります。1)まだ時間をおいても障害が起きないかどうか確認が必要。2)高速通信の速度を計測したところ以前より落ちている可能性があり、確認が必要。低速通信は問題なし)

ということで、もしNova3や他機種で、Android 9にアップデート後、データ通信速度が尋常でなく遅くなった場合は、通信設定の初期化->APNの再設定は試してみる価値ありです。

リセットの方法は、機種によって違いがあると思いますが、以下Nova3でのリセット方法です。

「設定」→「システム」→「リセット」→「ネットワーク設定をリセット」

f:id:mtstorm2:20190219210825j:plain

f:id:mtstorm2:20190219210844j:plain


f:id:mtstorm2:20190219210900j:plain


リセット後はAPNの再設定が必要ですが、APNはスマートフォン契約時のSIMカード台紙に書かれていることが多いです。APNがわかれば、後は再度APNを設定するだけでおそらくデータ通信が回復します!

お疲れ様でした。