Google人工知能入門講座 20181212

Machine learning crash course (Google)
12 /12 2018
今回は昨日解説しきれなかったFeature CrossesのVideo Lectureの続きのお話をしようと思います。

・ Video Lecture (続き)
前回話したように、特徴量を組み合わせた物を新しい特徴量としてモデルに加えることで、問題を解決することができるようになりました。
このFeature Crossesと呼ばれる方法はA×Bといった2つの特徴量だけでなく、A×B×C×D×Eといった複数の特徴量の組み合わせでも使うことができます。
ただ、特徴量がブール型であるような場合(特にone hot encoding で出てきたようなほとんどが0である場合)、合成時にほとんどの成分で0×0=0、または1×0=0となり、1となる成分がまれにしかないような特徴量になってしまうので、注意が必要です。

特徴量の組み合わせを行う際には、組み合わせることに意味があるかどうかを考えてから組み合わせましょう。
組み合わせを行った方が良い場合として、

・ 住宅価格を予測する場合の”寝室の数”と”緯度”の組み合わせ
・ 三目並べを予測する場合の”縦の列”と”横の行”の組み合わせ

などがあります。
どちらも、片方の特徴量だけではあまり意味がありませんが、2つを組み合わせることで予測するために必要な情報の精度が上がり、強力な特徴量になることがわかります。


最後に、なぜこのような特徴量の組み合わせを勉強するのかについてです。

線形にこだわらずにモデルを複雑にすればいいんじゃねと思うかもしれませんが、前のお話にも出てきたように、モデルは簡単なものであるほど汎用性があり、特に大量のデータに適するようなモデルとしては線形モデルは無難なのです。
まあ、いまではディープラーニングといった手法がありますが、それは後の方で勉強しますので置いておきましょう。

特徴量の組み合わせをおこなうことにより、非線形の問題を線形モデルで解決できるような問題へと置き換えることができるので、この手法はとても重要な方法なのです。


短いですが、今日はここまでです。

Google人工知能入門講座 20181211

Machine learning crash course (Google)
12 /11 2018
今日は短めに記事を更新します。

ここからFeature Crossesに入っていきます。
内容としては複数の特徴量を掛け合わせるだけです
簡単な事なのですが、この方法を使うことでより複雑なモデルをつくることができるのです。

・ Video Lecture

ちょっと初心者には難しいのです。
まず、動画の右上に書かれている

y = sign(b+w1x1+w2x2)

のsign()は符号関数であり、()の中が負だったら-1、正だったら+1を返すような関数です。
ここでは-1を"SPAM"、+1を"NOT SPAM"としましょう。

まず、以下のような場合を考えます。白い部分には何もないと考えてください。


20181211_1.jpg


この場合、y = sign(b+w1x1+w2x2)において、b=0、w1=0、w2=1とすれば

y = sign(x2)

となります。
x2>0のとき、y=+1となり、"NOT SPAM"となります。逆にx2<0のとき、y=-1となり、"SPAM"となります。


また、以下のような場合も考えてみます。


20181211_2.jpg


この場合、y = sign(b+w1x1+w2x2)において、b=0、w1=1、w2=0とすれば

y = sign(x1)

となります。
x1>0のとき、y=+1となり、"NOT SPAM"となります。逆にx1<0のとき、y=-1となり、"SPAM"となります。

ここまでが独立した特徴量を使った線形モデルで予測できる内容です。

では、次の場合はどうでしょう。


20181211_3.jpg


単純にb=0、w1=1、w2=1として

y = sign(x1+x2)

とモデルを作ったとします。
例えば、x1=-1、x2=+3だったとしたらy=+1であり、"NOT SPAM"となるはずですが、実際は"SPAM"なので違います。


このような場合にFeature Crossesの出番となります。
ここで、新しくx3=x1x2という特徴量を作り、モデルに加えてみます。つまり、

y = sign(b+w1x1+w2x2+w3x3)

となるわけです。
これを使って先ほどの分類を記述できるか確かめてみましょう。
b=0、w1=0、w2=0、w3=1として

y = sign(x3)

とします。
x3はx1とx2が両方負の符号、または両方が正の符号であるときに正となるので、y=+1("NOT SPAM")となります
逆に、x1とx2の符号が異なる場合、負になるので、y=-1("SPAM")となります。

つまり、見事に分類を記述できるようになったのです。
これが複数の特徴量を重ね合わせることの強みなのです。

今日はここまでです。

Google人工知能入門講座 20181209

Machine learning crash course (Google)
12 /09 2018
カスタムメイドのお話に続いて、人工知能入門講座のお話を少しだけしたいと思います。

今回はRepresentationのProgramming Exerciseのところをやりたいと思います。

早速Colaboratoryのページへ飛んで、コードを動かしていきましょう。

ここでは、すべての特徴量を使ってトレーニングするのではなく、ターゲット(モデルが予測する値)に対して強い影響力をもっている特徴量だけを選んでトレーニングする方法を学んでいきます。
特徴量を減らすことはデータの容量の節約やメンテナンスの簡易化などに役立ちます。

コードを動かしていくと、トレーニングデータと検証データの特徴量の分布と予想される住宅価格の中央値が表で出てきます。

20181209_11.jpg


20181209_12.jpg


ざっと見た感じ、平均値や分散に大きな違いはなく、モデルの学習は成功しているといえるでしょう。

ここから特徴量を絞っていきます。
絞る際には相関行列を用いていきます。こいつは特徴量同士や特徴量とターゲット間の関係を数値で示してくれるありがたいやつです。
数値が-1の時は負の相関(片方が増えれば片方が下がる)、+1の時は正の相関(片方が増えれば片方も増える)を示し、0の時は相関が無い(両方間に関係性が無い)ことを示します。
では表示させてみましょう。


20181209_13.jpg


まず、対角線上の成分が1になっています。これは同じ変数を比較しているからです。
次にターゲットに強い影響(絶対値で0.5以上とする)を持っているのはmedian_incomeであることがわかります。
他は絶対値で0.2以内に入っています。

20181209_14.jpg


次に特徴量を追加するとしたら、median_incomeと正の相関を持たず、かつターゲットとも正の相関を持っていないものでしょう。
要するにmedian_incomeで絞り切れないものを絞っていくわけなので、median_incomeと同じような特徴量では困るわけです。


20181209_142.jpg



あてはまるのは、latitude、longitudeの二つですね。
試しにlongitudeでやってみましょう。

20181209_15.jpg


まあ、いい感じではないでしょうか。
ちなみに、答えはlatitudeらしいです。

20181209_16.jpg


しかしながら、latitudeと住宅価格は線形の関係ではないそうです。
プロットしてみると、ある値の周辺にピークが立っていることがわかります。

20181209_17.jpg


どうやらサンフランシスコとかロサンジェルスなどの都市をしめしているらしい。
こういった場合はlatitudeを用いた関数に直して、結果を改善していきましょう。
例えば、|latitude - 38|というdistance_from_san_franciscoという特徴量を作ってみたり、latitude_32_to_33, latitude_33_to_34といった感じにlatitudeを分割して、あるビンに含まれるものを1、それ以外を0として特徴量を作ってみたりするとよいでしょう。

ここではビンごとに分けて学習させています。
つまり、one-hot encodingを行っています。
latitude_32_to_33はlatitudeが32以上33以下の時に1、それ以外の時は0となり、latitude_33_to_34はlatitudeが33以上34以下の時に1、それ以外の時は0となるように値を変換しています。
そして、それら変換された値をトレーニングに使用します。


20181209_18.jpg


値がプラトーに達していないので、学習率を少し大きくしてみましょう。


20181209_19.jpg


みごとにRMSEが100を切りました。

今回はここまでです。

カスタムオーダーメイド3D2 GP-01 その2

ゲーム
12 /09 2018
皆様、お久しぶりです。

カスタムオーダーメイド3D2 GP-01を一通りプレイし終わったので、今日はそれに関するお話です。
GP-01になってからいろいろと機能が追加されました。
今回はその内のいくつかを紹介したいと思います。


メイドさんのエディット機能については以下のような機能が追加されました。

・ 顔の輪郭(尖): 頬の辺りの肉の付き具合と顎の尖り具合を調整します
・ 眉の左右
・ 眉の角度
・ 眉の形状(内、外): 眉の丸まり具合を調整します
・ 鼻の位置
・ 鼻のサイズ
・ 耳: エルフ耳にしたり、耳の大きさと角度を調整します。耳を無くすことも出来ます。
・ 頬のつや
・ 目のハイライト(左右で変更できるようになりました)
・ 白目の影
・ 鼻: 鼻の種類を変更できます

こんな感じでいろいろと追加されました。
これらの中でもエルフ耳と鼻の種類の追加は大きなものですね。これのおかげでメイドさん作りのバリエーションが増えました。
あと、顔の輪郭(尖)も重要ですね。これのおかげで使用していなかったフェイスも使うようになりました。


20181209_2.jpg




ダンスに関しては2曲追加されました。

・ secret deep blue: 3人のメイドさんが円柱状の台を使って踊ります。物を使って踊るダンスが久しぶりに追加されたのでうれしいですね!


20181209_4.jpg



・ fusionic addiction: ポールを使って踊ります。エロ方面の踊りなので、あまり激しく動きません。


20181209_5.jpg




あと、Empire Life Modeなるものが追加されました。
朝の時にUsual Modeと書かれている画像をクリックすると選択画面がでてきます。


20181209_6.jpg



Empire Life Modeではメイドさんの組み合わせによって、様々なイベントが発生します。
組み合わせを変えてイベントを発生させてみましょう!



20181209_7.jpg



20181209_8.jpg



20181209_9.jpg



今日はここまでです。

カスタムオーダーメイド3D2 GP-01

ゲーム
12 /02 2018
カスタムオーダーメイド3D2がパワーアップしました。

その名もカスタムオーダーメイド3D2 GP-01。

そして、遂にエルフ耳が実装されました!

うれしくてたまりませんね!

これまで入れていたMODのバージョンをGP-01版に合わせる必要がありましたが、
なんとか作業を終え、ひたすら遊んでいます。

新しいコミュニティを立ち上げたばかりなのですが、ちょっとカスタムメイドの方に集中します。

誠に申し訳ございません。

それではまた。


img20181202224532.jpg



シジミパワー

 ブログ初心者です。よろしくお願いします。

 チャットボットにこちらからアクセスできます。
 チャットボットの開発及び運用は終了しました。使ってくださった皆様、ありがとうございました。

 
 ふりーむにゲームを掲載させていただきました。掲載されているページへ移動する場合はここをクリックしてください。