失われた夢を求めて -BigSleepを用いた夢の直感的解釈-

## はじめに
皆さん「夢」って最近見ていますか？

一説に「夢」とは、睡眠時に大脳皮質がランダムに活性化された際の脳内活動の残滓ではないかと考えられております。
しかし、残滓として記録している「夢」は脳内で短期記憶として格納されてしまうため、毎晩のように出会っているのに、朝ごはんを食べるころにはキレイサッパリ忘れてしまっています。

そこで今回は「夢」を新鮮なうちに具体化することで、いつでも「夢」の残滓を確認することができる仕組みを考え、実験したので、その結果と考察を記事にさせていただきました。

![夢を見ました.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102697/2ce7ebea-7393-17b3-e87b-3bca79f205d0.png)

##失われた夢を求めて

今回「夢」を具体化するために、以下のようなフローを考えました。

1. **朝起きた瞬間に覚えていることを記録する。**

2. **要約した文章を視覚化し、ひと目でわかるようにする。**

3. **いつでも夢を味わうことができる！** 

上記のフローを実現するために、今回は「BigSleep」という手法を用いました。

## BigSleepとは

「BigSleep」は、OpenAIの「CLIP」と「BigGAN」のジェネレータを組み合わせた手法です。

https://github.com/lucidrains/big-sleep

画像生成したいテキストを入力とし、テキストの特徴量ベクトルと生成画像の特徴量ベクトルとの内積が最大となるよう、パラメータの最適化をおこなうことで、まるでテキストの内容を反映したかのような画像を生成する仕組みになっています。

![モデル式.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102697/cfc57bfb-7cd9-3a9d-8f6b-e01fc6361fc7.png)

【参考にした記事】
http://cedro3.com/ai/biggan-clip/

今回は起床直後に覚えていた夢の内容を入力情報として、その文章から「まるで夢を反映したかのような」画像を作成する実験をおこないました。

## 今回の実験フロー

1. エアコンを効かせた、よく眠れそうな部屋でぐっすりと眠る[^1]

2. 朝目覚めたら、スマートフォンのメモに見た夢について覚えていることを記入する。

3. 記入した文章をBigSleepに学習させ、「あたかも夢を反映したかのような」画像を生成する。

## 結果

今回は、GoogleColabを用いて、実験をおこないました。
パラメータは作者の例などを参考に、このようにセッティングしました。

[今回使用したパラメータ]　
　epoch : 10
　iterations : 1000
　learning_rate : 5e-2 
　seed = 0　

以下は私が9/2 ~ 9/7 に見た夢の内容と生成された画像になります。

**9/2(木) 就寝 : 23時頃 [25.2℃ 94% (曇後時々雨、雷を伴う)]**

　見た夢「上司に仕事をさぼっていることを注意される」

 -画像- 
![Be_warned_by_your_boss_that_you_are_skipping_work.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102697/29618c29-92b2-90ba-d6b5-978743bd932b.png)


**9/3(金) 就寝 : 24時頃 [24.7℃ 96% (曇後時々晴一時雨)]**

　見た夢 (覚醒時に何も覚えていなかった)

 -画像- 

　無し

**9/4(土) 就寝 : 24時頃 [25.7℃ 77% (曇)]**

　見た夢「悪人に追いかけられてしまう」

 -画像- 
![Run_around_from_the_bad_guys.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102697/98f1e76f-e58d-5c53-eb4c-425045a263e6.png)


**9/5(日) 就寝 : 24時頃 [25.0℃ 77% (雨時々雨)]**

　見た夢「尻がツボにはまってしまう」

 -画像- 
![I_can't_move_because_my_ass_is_addicted_to_the_jar.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102697/402089ad-c74f-0555-db91-afb63bf0f978.png)


**9/6(水) 就寝 : 23時頃 [26.3℃ 70% (曇)]**

　見た夢「修学旅行の晩に徹夜でマージャンを打つ」

 -画像- 
![Go_to_school_trip_aboard_the_ship_and_played_mahjong_the_friends_together_on_the_journey.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102697/2e61a525-95b7-18dd-1908-c50e44967483.png)


**9/7(水) 就寝 : 23時頃(朝方途中覚醒 そこでのメモ) [26.3℃ 70% (曇後一時雨)]**

　見た夢「生茶ライブ、マリン船長、私はそんなに見える？」

 -画像- 
![Nama_cha_live_marine_captain_do_I_look_so_much_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102697/fdbb50c4-0e55-eb18-74e7-91b852a93ebb.png)


## 考察

実験結果から以下のような考察をおこないました。
　
**1. BigSleep内では言葉の接続関係よりも、固有ワードが強く影響を及ぼす**　　　
　
　特に固有名詞は象徴的な画像と結びつきやすく、その周囲での状況よりも強く影響を与えてしまうかもしれないということは、事前に少しだけ予期をしていました。

　実験結果は「ツボ」、「麻雀」のような具体性の強い名詞が存在した際、生成された画像はやはりその名詞に引っ張られるようなものになりました。
　
　これは画像生成のロジックとしては成功なのではないかと思いますが、自分の見た夢の感触としては、もう少し「名詞の内容は画像全体に混ざるのではなく、その名詞を中心にフワフワとした空間が出来るような」感触だったので、生成方法に工夫が必要かなと思いました。
　
**2. 起きた瞬間に思い出せる夢が、寝る直前に覚えていたことの整理になっている**

　これは少し(いやかなり。。。)想定外でした。

「きっと意味不明な繋がりを持った物凄いものが出来上がるぞ！！」と意気込んで寝ては見たのですが、朝起きた瞬間に覚えている夢は(ある程度)現実的でした。
　夢から生成した画像が「きっと昨晩こんなことをしたからこの画像が出来上がったんだろう」と解釈可能なものになってしまったのは少し残念でした。

　実験結果でいうと
　　
　　・「**上司に仕事をさぼっていることを注意される**」
　　　　　
　　　　　→　**業務が捗らなかったと思いながら寝た日**　

　　・「**尻にツボが挟まってしまう**」
　　　　　
　　　　　→　**某壺おじさんのゲーム実況を見ながら寝落ちした日**　

　　・「**修学旅行の晩に徹夜でマージャンを打つ**」
　　　　　
　　　　　→　**直前に麻雀ゲームをして寝た日**　

　が記憶の整理で終わってしまった？夢でした。

　これは、夢というものの本質に切り込めて有意義な結果にはなりました。

　これまで自分は「夢とは大脳皮質のランダムな活動によるものだから、頭の中にある記憶フォルダからでたらめにデータをつなぎ合わせているのだろう」と考えていました。
　しかし、今回の結果から「短期記憶のフォルダに入っているものをベースにある程度法則性をもってデータをつないでいるのかもしれない」という新たな知見を得られたことはとても良かったと思います。

　そういう意味では「枕元に好きな人の写真を入れて眠ると夢で出会える」なんていう昔の迷信もあながち間違えではなく、就寝前に短期記憶フォルダを好きな人でいっぱいにすることで、ある程度好きな人とのエンカウント率を高められるのではないかと思いました。[^2]　　　 

## どうすれば失われた夢は手に入るのか

　今回はBigSleepという手法を用いて、失われた夢を獲得し具現化する実験をおこないました。
　結果としては「まだまだ [文字]＝[画像] を作っているだけで、夢を具現化できるまでには至っていない」という結論になりました。
　しかし、今後画像生成のロジックを整理することで、「少なくとも自分が見ていたっぽい画像」は十分に作れるのではないかと思います。

 　今回の実験からは得られた格言は。。。
　　「 **寝る前に仕事のこと考えるの、ダメ、絶対。** 」
　
　最後まで読んでいただき、本当にありがとうございました。

[^1]: 具体的な室気温に関して指定はありませんが 、健康のためにも眠りやすい環境でぐっすりと休みましょう。
[^2]: 次回実験する際には「部屋中に対象を想起するようなアイテムを散りばめた時」の実験もやってみたいです。