ゲームについて語るオタク
先日紹介した趣味のゲームについてもう少し語る。
初めてのゲームは小学生よりも前とかでゲームボーイで遊んでたような気がする。ちゃんとやり込むようになったのは中学生から。
プレイステーション系のゲームを中心に遊んできたけど、任天堂のゲームもちらほら。先にプレステ系について話す。
プレイステーションのゲームにどハマり
プレイステーションのゲームには大体トロフィーっていうゲームの達成度合いを表すものがあるんだけど、当時PS3で初めてトロコン(トロフィーをコンプリートすること)してからどハマりした。
最初にトロコンしたのはファイナルファンタジーXIII(FF13)。
当時最高峰のグラフィックとテンションが上がるBGMに感動しっぱなしだった。 攻略ルートが一本道だったり、何でもかんでも奇跡って言ったりして賛否両論ある作品だけど、中学生だったこともあってとにかくワクワクしながら遊んでた。
ネット上の評判は気にせずにぜひ遊んでみてほしい。ちょっと古いけど。
ここでの達成感がきっかけとなったのか、新しいゲームを遊ぶたびにトロコンするまでやり込むようになった。
FF13の順番がズレてるのは、このアカウントが2つ目だから。1つ目のアカウントではFF13、FF13-2、FFLR、ダークソウル、ラストオブアスの5つをトロコンした気がする。
一部トロコンの難易度がキツすぎてやり切れなかったり、取り返しがつかない要素をやり忘れて2周目のモチベーション湧かなかったりでトロコンしてないゲームが目立つけど、まあまあ頑張ってる。
ファイナルファンタジー・モンスターハンター・バイオハザードはあんまり詳しくない人でも名前聞いたことあるくらいには有名だし面白いからオススメ。あとはラストオブアスとかNierシリーズとかも感動するし楽しめる。
個人的にはグラヴィティデイズっていう重力を操りながら自由自在に動けるゲームは爽快感満載だし、○○のアトリエシリーズは錬金術使って試行錯誤しながら敵を倒したり問題を解決したりするのが奥深くて楽しい。
バイオハザードヴィレッジは久しぶりのトロコンだからちょっと嬉しい。
任天堂のゲームを語る
続いて任天堂のゲーム。
と言ってもSwitch以外は実家にあるから特にここでは書かないw
大学の友達からスプラトゥーン2誘われ続けたのをだいぶ放置してたんだけど、なんか急にやりたくなって買った。
スプラ2は周りのみんなが上手くなりすぎてなかなか着いていけなかったせいかハマれなくて5時間くらいでやめた。ジャイロ操作も難しくて視点移動とんでもないことになった笑
その代わりゲームキューブとかWiiでよく遊んでたスマブラを遊んでた。友達の家で遊ぶときってスマブラとかマリカよくやるよね??
でも1番遊んだのはあつまれ どうぶつの森。トロコン機能はなかったけどゲームを極めたくなる性格のせいか、500時間以上もプレイして島全体をクリエイトしまくった。
友達ともオンラインでいっぱい遊んですごく楽しかったなあ。初めてのどう森にしては相当やり込んだと思う。
最後に少し
大学に入って一人暮らしを始めたのをキッカケに通話しながら遊ぶようになったんだけど、それが楽しすぎて逆に1人で黙々とプレイするゲームだとなかなか満足できないように。
ソロ専用のゲームでもワイワイ話しながら遊べたら面白いだろうな〜と思うし、YouTubeで配信すれば誰かと楽しさ共有しつつ遊べるんじゃね?って考えてる。
ゲーム実況配信とブログの相乗効果で人集まったりしないかな。笑
そんなわけで大好きなゲームについて語ってみた。
次はディズニーについて話そうかな。
ではでは。
ちょっとおサボり
今週も皆さんおつかれさまでした。
今日は研究室紹介があって機械学習の方もWebアプリ開発もあんまし進められなかった。
たまにはこういう日があってもいいよね。
一応Webアプリ開発の参考書は150ページくらいまで進めたんだけど、バージョン管理システムの構築とか開発用サーバの動かし方とか静的なページの表示についてだったからコレと言って特筆する内容が無い。
静的なページもHello Worldって表示するだけだったし。
プログラマー初心者がよくやるやつ。
Twitterアカウント作ってみた
鍵かかった状態の趣味アカウントでブログ更新の投稿してたんだけど、絶対に機能してないから専用のアカウント作った↓
今の時代は自分から発信していかないとね。気軽にフォローしてもらえると嬉しいです。
プログラミング関連のこととか投資についての情報を収集したり発信したりしていきたいと考えてる。そんなに堅苦しくない感じでつぶやいていきたい。
簡単な投資をスタートしてみる
ひとまず始めてみないことには何もわからないから、口座を開設して投資を始めようと思う。どのネット証券がいいとかは詳しくないし、おすすめランキング1位のSBI証券か楽天証券を開設する。ド初心者。
元金はホントに少なめにしようと考えてる。数万円くらいで。
来年から社会人になるから無駄な物をメルカリで整理して、そのなけなしのお金を使ってみる。そんなにお金にゆとりないし笑
今回はゆる〜い内容でお送りしました。
明日はメルカリの出品を頑張りつつ、趣味のゲームについて書こうかな。
・・・タグの釣り感ハンパないって。
ではまた。
大学生の趣味について語ろう
ブログっぽいブログも書いてみたいから勢いで書いてみる。
いつもは技術系のことばっかりだから、今までの記事読んだ人には
「この人プログラミングしかしてないのかな?」
と思われてるかもしれないし、その考えを払拭する。というかプログラミングはむしろ趣味でもなんでもない。
色んなこと書いてた方がたくさんの人に見てもらえるだろうし、きっと楽しそう。
とはいえコレと言って珍しい趣味がある訳ではないけど笑
ゲーム・アニメ・ディズニー旅行・読書ってな感じでド定番なラインナップ。
今回はそれぞれ軽〜く触れるだけにして、後々深堀りして話していきたい。
ゲームについて語る
まずゲームなんだけど、ゲーミングPCは持ってないからPS4とSwitchで遊んでる(PS5欲しい)。
話題のゲームとか人気作とか、流行りのゲームはとりあえず買ってプレイしてるミーハーだね。
最近プレイしたのはバイオハザードヴィレッジとNier Replicant、あとはみんな大好きAPEX。APEXの流行り方ホントにすごくて周りの友達大体やってる。
アニメについて語る
アニメは中学生とか高校生の時ほど観なくなっちゃったけど、シーズンごとに流行りの作品は抑えてるって感じ。
今シーズンは東京リベンジャーズ観てる。マイキーがイケメンすぎよな。
(・・・公式サイトのサムネ反映されない)
もちろん呪術廻戦とか鬼滅の刃とかも観てた。
今シーズンだとフルーツバスケットも観てたんだけど、Netflixだと月1ペースで更新されるから観るの忘れてる。
ディズニー旅行について語る
これまたみんな大好きディズニー。インスタのストーリーとかLINEのトプ画に使われてる率高すぎやしないか??
”年に1回は行ってるかな” くらいだしディズニーオタクには程遠いけど、TDL、TDS以外にも香港ディズニーランドとフロリダディズニーワールドには行ったことある。あとアウラニっていうハワイのディズニーリゾート施設にも。
左右で天気の落差がスゴい。フロリダではちゃっかりクルーズ船に乗ったりもした。
いつかは世界のディズニー施設全制覇したいと思ってる。特にヨーロッパ方面行きたい。
読書について語る
最後は読書。そこそこ最近になってからの趣味だからそんなに語れはしないw
ジャンルなら恋愛系・旅行系とかをメインに読んでる。
みなさんお馴染み住野よるさんの作品は世界観だったり登場人物の心情描写が素敵で惹き込まれるし、
原田マハさんの女性視点から描かれる仕事観だったり、日常から飛び出て旅をするようなストーリーは旅行したい想いに駆られる。
にわかだからこれくらいの感想にとどめておく。笑
軽く紹介すると言ったものの案外色々書いてしまった。
後々それぞれについてもう少し詳しく話していきたい。
今まで通り技術系の内容については毎週月・水・金に投稿して、それ以外は気が向いた時にゆる〜い感じの記事を書いていこうかな。
とりあえず4回分のネタ確保。
PostgreSQLのインストールに小一時間悩まされた話
技術ばっかり書いてても自分もみんなも面白くないだろうから少し心境を語る。
最近は週1ペースで楽しいことが起こってる(というか起こしてもらっている)から何かと結構頑張れている気がする。
人と会う機会が少ないからこそ話したり情報共有する機会が大事。
ブログ始めて2週間くらいしか経ってないけど、少しずつ見てくれる人が増えてるのも嬉しい。最近はそんな感じ。
では本題に移ろう。(失敗例→成功例の順に説明するから、成功例だけ見たい方はスクロールしてね。)
PostgreSQLのインストールエラーを解消してみた(ボツ編)
以前紹介したWebアプリ開発の参考書を進めてたら環境構築で躓いた。
参考にした書籍はコレ↓
どうやらデータベースにはPostgreSQLを使うらしい。
MacOSで開発を進めてるから、brewでインストールをすることに。
brew install postgresql を入力するとインストール自体はしっかり出来た。インストール後に psql --version と打ってPostgreSQLのバージョンが表示されればインストールは完了。(はてな記法とかMarkdown記法知らんからソースコードが見づらくてゴメンネ)
ホームディレクトリに.bash_profileが無い場合は touch ~/.bash_profile を実行、ある場合はvi ~/.bash_profileを実行して、ファイルの中に以下を記載する。
export PATH=$PATH:/usr/local/Cellar/postgresql/13.3/bin (ここでの13.3はインストールしたバージョンに応じて適宜変更)
その後、source ~/.bash_profile を実行すればパスが通る。
そしたらPostgreSQLを起動するために brew services start postgresql と打ってから、createdb ”作りたいデータベース名” と打てばデータベースが作成される。本来は。
ただし自分が作業してた時はエラー吐かれて動かなかった。
とてもざっくりと言えばサーバに接続出来ないからデータベースにもアクセス出来ないよってエラー。(もしかしたら成功例の方の、②から試しても解決できるかもしれない)
とりあえずエラーメッセージをコピペして検索してみる。参考に試してみたけどダメだった内容とサイトを軽く紹介。人によってはココで解決するかも?
- PostgresSQLサーバを起動する
sudo systemctl start postgresql を実行するとサーバの再起動が出来るらしい。
OSが新しいと(現在はBig Sur使用)シェルにzshが使われていると思うんだけど、そもそもzshに systemctl コマンドが対応してなかったのでボツ。
postgresql — PostgreSQLエラー:データベースtemplate1に接続できませんでした:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありません
- postmaster.pidを削除する
rm /usr/local/var/postgres/postmaster.pid を実行してpostmaster.pidを消せば直るよって書いてあったけど、そもそもそんなフォルダもファイルも無かったのでボツ。(でも後々使うことになった)
- brewでインストールし直す
インストールに失敗していなかったのでボツ。古いバージョンをインストールしたことがある人はこれで直る可能性もある。
- PostgreSQLのサービスを開始・停止・再起動してみる
1つ目と内容的には似てる。けどちょっと違うこと書いてあったから一応。
特に直らなかったけど、postgres -D /usr/local/var/postgres を実行すると
PostgreSQLの実行ログが見れるって情報は、エラーを見つけるのに後でかなり役立った。
macos+homebrew+postgres で接続エラー「PG::ConnectionBad: 〜"/tmp/.s.PGSQL.5432"?」を解決 - Qiita
PostgreSQLのインストールエラーを解消してみた(成功編)
結果的には以下の3サイトの情報を見比べて解決に至った。
Postgresqlに接続できなくなった時の対処法 - Qiita
ruby on rails - Postgres could not connect to server - Stack Overflow
HomebrewでPostgresqlをインストール(MacOS 10.8) - Qiita
大体どこのサイトにも /usr/local/var/postgresってフォルダがあるみたいに記載されてるのに確認してみたら無い。3つ目のサイトにデータベースを初期化するために、①initdb /usr/local/var/postgres を実行するとあったので、実行したらフォルダが作成された。
これだけだと直らないから、②sudo chmod 1777 /tmp を実行して/tmpに権限を設けさせる。で、さっき紹介した postgres -D /usr/local/var/postgres を実行してエラーを確認すると、
という訳で ③rm /usr/local/var/postgres/postmaster.pid を実行してサヨナラする。これで完了。あとは psql -l とか createdb ”作りたいデータベース名” を実行してみてエラーが吐き出されなければ無事解決!!ってな感じ。
とても読みづらい内容だったと思うけど、誰かの助けになるかもしれないと思って書いてみた。
めっちゃ時間かかったから頑張ったように思えるけど、これ環境構築だけしか進んでなくね・・・!?!?(一応参考書の内容としてはDjangoの説明がこの前のページに挟まれてたし、実際100ページまで読んだので前回から70ページ以上進んだ。)
次の章からアプリケーション開発に入っていくっぽいから、今までの座学と違っておもしろそう。次回からも頑張っていくぞ〜〜!
PythonにマイPCを寝取られた話
タイトル意味不明すぎると自分でも思うけど実際の話。正確にはPCというよりCPUとかGPUとかのメモリ。Webアプリについて綴ろうと思ってたはずがこの一件のせいで出来なくなったし、折角だからこの事件について語る。
事件はある日突然に
研究進めるために機械学習用のデータ作ろうとしていた時にその事件は起きた。プログラムを動かし始めた時点で薄々気付いてはいたけど、明らかに動きがゆっくりで実行完了までにかなりの時間がかかると予想できた。
当時は夜遅かったし、朝まで終わらないなと思ってYouTubeを見始めた。すると途端にプログラムは強制終了され、途中までの実行結果が全てお釈迦に。
いつも寝る前にYouTube見るのを日課にしていたのがここにきて仇となった。その日は仕方無く諦めて、プログラム以外のアプリを全て終了した。
君は4GBのCSVファイルを見たことがあるか
朝目覚めてからもプログラムは動き続けて、実行開始から7、8時間くらいが経過してようやく完了した。学習データとテストデータをそれぞれ作成したんだけど、結果確認のために配列サイズ表示したらこんなことに。
なんだ19万行、21万行って・・・。
上から順に、①学習データの特徴量データ、②学習データのラベルデータ、③テストデータの特徴量データ、④テストデータのラベルデータって並んでるから、特徴量データがとんでもない量に。
音認識をするために特徴量にはMFCCを抽出してた訳だが、1データが24×2206のサイズで抽出されたからこんなことに。デカすぎんだろ・・・。
配列の用素数を単純に計算してみると、学習データは195816×2206 = 431970096(約4億3千万)データ、テストデータは210840×2206 = 465113040(約4億6千万)データもある。
しかもそれぞれのデータがfloat型だからとんでもない容量になったというわけ。
このデータをCSVファイルにしてみたらこんな感じに。
いやテキストデータで4GB超えるってありえんでしょ普通。開こうとしても全然読み込み終わらないから結果が正しいかも分からん。
しかも最初は195816×2206の形だとよろしくないから(24×2206, 8159)の形に直してCSVファイルに書き込んでたんだけど、数千とか数万単位のデータだと途中が...で省略されちゃうからうまく書き込めてなかった。
良い解決策考えるのめんどくさかったから用素数4億超える1次元配列に直して保存した結果がさっきのCSVファイルww
4GBもあるデータ使って機械学習させたらどれだけ時間かかるのか恐ろしくて考えたくない。てか絶対に特徴量の抽出方法考え直さないとアカンて。
研究も一応やってるよの意も込めて書いてみた。
もし実行中めちゃめちゃ重くなるようなら研究室のPC使わないとだなあ.....。リモートで作業出来ていただけにそうなるとつらい。
Google Colaboratoryでワンチャン動かないかな。
実行中のスキマ時間にこの前買った参考書読み進めていくよ。
ではまた。
今後の方針についてダラダラと
Webアプリの参考書買ってみた
機械学習の内容が一通り終わったから、Webアプリの勉強するために1冊参考書買った。
参考になるwebサイト無いかな〜と調べてたら、とあるサイトでこの参考書オススメされてたから買ってみた。
「一人でもサクッと会員制Webアプリを作って運用まで行う」を隠れテーマに設計から運用まで解説してくれるっぽいからなかなか良さそう。
著作権とか怖いから内容についてはあまり触れられないしどうやって記事書いてくか悩み中。
最近悩んでること
悩みといえば今後の記事どうしていこうかなと。
週に3回ペースに間に合うように新しい技術をインプットし続けるの簡単ではなさそう。でも逆にこのペースでインプットし続けられればスーパーエンジニアになれる気もする。
最近は研究のためにデータのラベル付してるのと、就活の経験を後輩たちに引き継いで活かすために就活の体験記を書いていたから、あまりインプット出来てなかったんだよね・・・と言い訳しておく。
Webアプリ開発の進捗
とりあえず参考書のChapter 2まで読んで、開発の基本方針と今回のWebアプリ開発で使うソフトウェアとサービスについては学んだ。24ページしかないけど笑。
Pythonはもちろん、データベースとしてPostgreSQLとか、WebアプリフレームワークのDjangoとか、あとは本番運用環境ではAWS使ったりとか。覚えることは多いけどこれ1冊で幅広く学べそうなのでワクワク。プログラムのバージョン管理にGitとかBitbucketについても解説があるっぽいのも良い。
使うものは全部無料ってのもありがたい。ただAWSは1年間の無料利用枠を使うらしいから、将来的に継続して使うなら他のサービスも考慮しつつ最適なサービス選んでいきたいね。来年からは社会人になるし、有料のサービスも使っていけるようになるはず。
今後の方針を考えてみる
今回はアウトプット出来る技術が無いから、最後にキャリアプランというか将来設計についてでも書こうか。
とりあえず機械学習とかWebアプリについて学んでる理由は初回のブログでも軽く書いたけど、幅広く技術身につけて安定した人生歩むためね。
んで何をやるつもりかといえば、機械学習では株価予測、Webアプリとかブログでは新しく学んだ技術だったり株価予測の知恵を有料で配信出来るくらいになりたいなと。
技術として必要なのは機械学習はもちろん、日々の株価の変動を自動で確認するためにWebスクレイピングだったり、自動で売買するための機能(これはまだ見通し立ってない)だったり。
株価予測がしっかり出来てるか確認するために1年くらいは取引行わずに勉強に費やすつもりだし、自動化に向けてどのくらいの頻度でデータを取得するかも考えなきゃいけない。頻度が高ければ高性能PCも必要で、それを買う資金どうすんの?とか課題は山積み。
とりあえずやること多いからって悩んでるだけじゃ始まらんから、中でも重要そうな機械学習とWebアプリ開発に取り組もうって感じね。
もし株価予測とかうまくいかなくても、技術力を身につければ本業もなんとかなるだろうからあんまり不安は無い。
研究のモチベーションなかなか湧かないこともあったけど、機械学習について学ぶ意義が生まれたおかげでラベル付も順調に進められているし、意外なところにメリット生まれてる。
見通しの甘さについては否めない。でもモチベーションをなんとか継続していけるように頑張る。万が一書くこと無くなったら趣味についてでも書く。
ではまた次回。
0から始める機械学習(モデルの評価・認識精度の向上編)
機械学習の記事は今回で一旦最終回。機械学習編最後にお送りするのは構築したモデルの評価と認識精度の向上について。
irisデータセットやMNISTデータセットとかは初期パラメータで学習させてもそこそこの精度を発揮できるけど、これは学習データとテストデータの特徴が似ているからであって高性能なモデルが構築出来たわけじゃない。
とはいえ実世界のデータを準備したり、学習データとテストデータに特徴が異なるデータを用意するのは難しいので、ここでは引き続きirisデータセットを使っていくよ。(自前のデータを用意出来ている方は是非そちらで!)
あと機械学習の手法については、GBDTの中で比較的に高精度かつ高性能と言われているCatBoostと、前回紹介したシンプルなDNNに対して精度の改善を目指します。
本日の内容はこちら↓
- モデルの評価方法について
- 学習データの整形
- モデルのパラメータチューニング
精度を改善するための方法として簡単に実装できるものを紹介するよ。学習データの増加(データ拡張)みたいな手間のかかるものはまたの機会に。というか自分でも取り組み切れてない。
モデルの評価方法について
まず紹介するのはモデルをどのように評価するかについて。
新しいコードはコレ↓
たったの4行だけ。これを実行すると、confusion matrix(混同行列)とclassification report(分類のレポート)が表示されるはず。
こんな感じで。
違う結果が表示されていたとしてもirisデータセットの読み込みをシャッフルしているせいだから気にしなくてok。
左上にある混同行列と下の詳細からモデルの評価を行っていくよ。
まず混同行列から。
行ごとのデータが正解データ、列ごとのデータが予測データを表してる。今回のテストデータはラベルごとの偏りが無いように割り振られているから、Setosa、Versicolour、Virginicaのいずれも15データずつあります。
表の見方としては、例えば表内左上(1行, 1列)の15という数字は ”Setosaが正解である時に、Setosaと予測されたデータの数” を表している。表内中央下部(3行, 2列)の1という数字なら ”Virginicaが正解である時に、Versicolourと予測されたデータの数” を表してます。
正解と予測の見方がごっちゃになりがちだけど、15データずつと分かっているから行ごとのデータ数、もしくは列ごとのデータ数を足してみれば分かるはず。行ごとのデータは15ずつに対して、列ごとでは15、16、 14になっているからおかしいね。
続いて分類のレポート。
precisionは予測されたデータ数のうち、正解であったデータ数の割合。
recallは正解となるデータ数のうち、実際に正しく予測されたデータ数の割合。
f1-scoreはprecisionとrecallの調和平均(噛み砕いて言うと、双方を同じ比率で考慮したもの)
となる。
例えば、Versicolour(ラベルは1)のprecisionであれば、Versicolourと予測されたデータ数は15 + 1 = 16個で、正解だったデータ数は15個だから15 ÷ 16 = 0.9375 ≒ 0.94 になるし、Virginica(ラベルは2)のrecallであれば、Virginicaが正解となるデータ数は15個で実際に予測されたのは14個だから14 ÷ 15 = 0.9333 ≒ 0.93 になったというわけ。
ちなみにsupportはそれぞれのデータの数で、accuracyは単純な認識精度。前回は各手法の評価にaccuracyを使ったけど、どの評価指標を使うかは用いるデータや重要視したい目的に沿って適宜使い分け。
コロナウイルスで例えるなら、間違えて陽性と診断される患者が多いよりも間違えて陰性と診断される患者が多い方が感染拡大につながるからrecallを重視する...的な。まあ間違えて陽性と診断される患者が多いのも問題だけど時代背景を例に説明するとこんな感じ。
評価指標についてはこちらの記事により分かりやすく書かれています。
学習データの整形
想像以上にモデルの評価の記事が長くて飽きてきたと思うから、ここからは巻きで。
数多ある学習データの整形方法から選ばれたのは、正規化と標準化。基礎中の基礎と言ったとこだね。
コードは以下↓
正規化と標準化はどちらか一方を適用して学習データとして用います。一応GBDT手法では正規化も標準化も結果に影響を与えないので、実際に動かしてみたい場合にはDNNに入力しよう。詳しくはググってみてね。
モデルのパラメータチューニング
パラメータチューニングも色々な項目があるけれど、今回はlearning rate(学習率)についてだけ。
CatBoostでは学習率はparamsの中にlearning rateを設定するだけ。
DNNではrateの値を変更するだけ。
学習率は0 ~ 1の範囲で設定可能で、基本的には値が大きいほど学習時間が短くて精度は低くなるし、値が小さいほど学習時間が長くて精度が高くなる傾向にある。
はしょりすぎたけど許して。
これにて機械学習編はひとまず完結。webアプリ開発のためにPythonとDjangoの参考書買ったから、勉強進めつつブログもぼちぼち進めていきま〜す。
それでは!ノシ