【ニューラルネットワークの回帰】利口な怠け者は効率を追求する…! ②

ニューラルネットワークの回帰について勉強してきました。

投稿間隔と指名数のデータから読み取れること

回帰とは連続値の予測です。例えば、写メ日記の投稿間隔と指名数のデータ(青い点)に基づいて、どのような予測(赤い線)ができるかを計算します。もちろん内容や投稿時間などによって現実値は変わってくるので、こんな単純な表し方はできないですが・・・

横軸:投稿間隔 1回投稿してから次に投稿するまでの時間
縦軸:指名数 電話やWeb予約で問い合わせのあった回数

この予測を立てられると、ある女性がどれくらい指名を得られるか、写メ日記を見るだけでわかるようになります。スタッフ側としてはかなり便利な指標のできあがりです。

この青い点から赤い線を計算します。まずは何次関数か考えます。上図の場合は2次関数と狙いを定めました。

指名数= a*投稿時間^2 + b*投稿時間 + c

このa, b, cを適切に定めるのが目標になります。初期値は適当で大丈夫です。

こんな感じでOK。

緑の線の長さの合計を最小にするa, b, cを求めます。式で書くと以下のようになります。

Eが緑の線の長さの合計ですので、求めたい値はEを最少にするa, b, cです。この式を図示(かなり適当)すると以下のようなイメージです。

適当に決めた初期値が青、目的値が赤

a, b, cを更新して徐々に青を赤に近づけていきます。つまり勾配降下法を使います。微分しやすいように式を変形します。

Eの最小値は当然変わりますが、Eが最小値をとる時のa, b, cは変わりません。更新したい値が3つあるので偏微分が必要になります。

最小値を知りたいEは下に凸の形をしているはずなので、初期値が大きい場合は左に、小さい場合は右に向かって青を更新して赤に近づけていきます。

初期値を大きくとったと仮定して左側に近づけていきます。ちょうど上の図と同じですね。なのでどんどん値を小さく更新していくため、微分した値を引き算して更新します。

ηは定数です。一度にどれくらい更新するかを決めますが、値が大きすぎても小さすぎてもうまく最小値に近づいてくれないので、調整が必要です。

というわけで求めたかったグラフの完成です。

写メ日記の投稿間隔から指名数を予測

これで任意の女性の写メ日記の投稿間隔から、その女性がこの先どれくらいご指名をいただけるかを予測することができます。

投稿間隔と指名数という2つの要素だけで更新をしましたが、内容や投稿時間、その他の要素も計算に加えると、変数が増えていきます。

そのたびにどの変数は何次かを試す必要がありますが、あまり要素が多すぎると過学習という状態に陥り、融通の利かない関数ができあがってしまうので注意が必要です。

この記事を書いた人

西園寺
  • 西園寺 ( / )
  • 社会人3年目、楽しく人生を送りたいと考えて、思い切って以前から興味のあった業界に飛び込みました!慣れない環境に奮闘しつつ、成長する様子を綴ります。

西園寺が書いた記事