大学生の学習ログ

大学生。日々の記録

2023年5月21日の日記

今日はスタートダッシュが微妙だった。皮膚炎がひどくて皮膚科に行ったけど財布を忘れて出直しになった。落ち込んだ気分を回復するためにとりあえずおやつでも食べようと思ってスーパー入ったけど、商品選んでる途中で、そういえば財布忘れてたんだと気づいた。あほすぎる。結局薬はもらえたけど、予定の3倍の時間かかった。

帰宅してから機械学習の勉強を進めた。今日は活性化関数について学んだ。活性化関数っていうのは、深層学習において中間層をつなぐ役割を担っている関数のこと。深層学習はやってることはシンプルで、入力値に①重みをかけて②合計して③活性化関数を適用するこれを全部の層で繰り返す。繰り返しが終わったら出力層で誤差を求めて、勾配を求めて重さパラメタを更新する。この時誤差の値が逆流して伝わっていくのが誤差逆伝播法といわれる手法。少しわかりにくかったかもしれないのでざっくりまとめると、①~③のプロセスを繰り返して誤差関数を最小化している、ということです。今日学んだのは③の活性化関数の具体的な中身について。最初に学んだのはシグモイド関数とよばれる関数。シグモイド関数は-∞から∞で定義されて、値域は0~1。詳細は省くけど、この関数は今は活性化関数としてあまり用いられていないらしい。その理由が勾配消失という(典型的な)問題が発生するから。勾配消失というのは重みパラメタを更新するときに使う勾配という値が0になることで、重みが全然変わらなくなってしまうという問題のこと。勾配は活性化関数の微分係数を利用して求められるから、活性化関数の導関数の値域がとても重要。そういう観点からシグモイド関数をみると、導関数の最大値が0.25で0に近いから勾配消失が起きやすい(らしい)。そこでtanhという双曲線関数を活性化関数として用いるようになったらしい。今度は導関数の最大値が1だから、勾配消失が起きにくい。でも、現在広く使われているのはReLU関数という関数。これはmax(0,x)と定義されるシンプルな関数でこっちの方が計算が高速だし、勾配消失を避けるための細かな工夫が必要なく、実際に精度も高いという報告がある。さらにはReLu関数のバージョンアップとしてLeakeyReLUとか、GELUとかも勉強した。他にもいくつかのトピックを勉強したけど、活性化関数についての印象が強かったからそれを中心に書いた。

今日もリスニングをやった。今日は Amazon.co.jp: コーダ あいのうた(字幕版)を観る | Prime Video を題材にリスニングをした。大好きな映画でもう何回も見たけど、そういえばどんな英語を使ってるか全然わからないなと思って、この際リスニングの題材にしようと思い立った。ちなみにアマプラでリスニングするときは英語字幕と、指定した字幕の箇所にジャンプできる拡張機能を入れると便利。(というかそれないと不便すぎると思う)これです。Subtitles for Language Learning (Prime Video) - Chrome ウェブストア たった冒頭10分で新しい表現にたくさん出会えてよかったけど、ほとんどスラングとか僕が自分からは使わなさそうな表現ばかり出てきたからここで書くのはやめにする。(〇〇と性交するという意味になる表現だけでたくさんあって面白かった)