E資格(エンジニア資格)2024#1に無事合格したのでそれまでの話をつらつらと

E資格について昔話したと思いますが(こちら)、結果はどうだったか、どんな勉強をしたのかを話していこうかと思います。 まずこちらでJDLAが2024年第一回E資格の結果発表が出ています。合格率や平均得点率、年代・業種・職種・役職別の合格者数が出てます。 私の結果がこんな感じです。 応用数学と開発環境は6割切ってますが、機械学習と深層学習は7割近くになってますね。ちなみに今のタイミングでX(旧: Twitter)で"E資格"を調べると他の人の得点率を見れます。落ちた人の結果を見ると機械学習と深層学習の得点率が低かったみたいです。 問題数から見ると応用数学と開発環境は出題数が少ないので最悪ほぼ取れなくても問題なさそうです。機械学習と深層学習が問題数多いのでこちらを抑えればいけそうな気はしてます。 結果はこんな感じでしたが勉強方法は割とシンプルです。 前にもお話ししましたが私はStudy-AIを使って認定証を取りました。Study-AIでは模擬試験とその解説、過去問(32問分)がありますのでそこを徹底的に理解し、満点取れるまでやりました。 他の方法だと黒本だったり参考書をチェックしたりですかね?それからデータ加工のプログラムは仕事で使ってるので “np.array” だったり、論文で書かれてることはこんな書き方できそうだなというのはなんとなくわかります。実際にプログラムを動かすのは大事ですね。 何度も話してますが資格はあくまで資格なので実際に実装できたり、知識を活用していくことが大切だと思います。資格を取って終わり、じゃなくどう活用していくか?なのでそろそろKaggleに挑戦してみようかと思います。ではでは。

2024年3月10日

pythonの仮想環境構築をいくつかやったので使ってみた感想を書く

前回の続きになります。 前回は仮想環境が必要なの?というテーマで書いてみましたが、とはいえ使えるに越したことはないので実際に試してみて使った感想を残そうと思います。 今回仮想環境を構築するにあたって試してみたのは以下 pip venv pyenv(環境的に使えなかった) pipenv poetry docker(環境的に使えなかった) Rye(環境的に使えなかった) 一応ざっくりと説明すると ライブラリのインストール:pip、pipenv、poetry 仮想環境の構築:venv、pipenv、poetry、docker pythonのバージョン管理:pyenv、docker 一般的に組み合わせとしては pip + venv + pyenv pipenv + pyenv poetry + pyenv docker + pipenv あたりだと思います。私も依存関係とかは詳しくないのでそうなんだという認識ですが… まずは “pip” 、pythonユーザーであれば皆さん使用してるので説明は省きますが、標準ライブラリで馴染みがあるものですね。 次は “venv” 、昔はvertialenvが使われていたみたいですがそれが標準ライブラリになったものです。vertialenvとは別物ですが使い方は同じですね。 仮想環境の作成や有効化ができ、標準ライブラリなので様々な教材でも使用されると思います。有効化に面倒な設定があったり、自動化やライブラリ一覧の出力にも手間がかかるので少し使いにくいですが、覚えておいた方がいいですね。vscode使うならインタープリターの選択で有効化できますが… 次は “pyenv” です。私の環境ではシステム環境変数をいじれないので使えませんでした。 pythonのバージョンがインストールできず、localやglobalの設定もできない状況でした。使えなくて残念ですが、vscodeのインタープリターで選択すれば問題ないのでいいかと あるいはユーザー環境変数で任意のpythonバージョンのPATHを上に移動させるとかですかね。 次は “pipenv"です。こちらはライブラリのインストールと環境変数の作成が一体化した便利なライブラリになっています。 個人的には一番使いやすく感じました。仮想環境構築のしやすさ、ライブラリ一覧の自動化は便利だなと感じました。制限がなければ “pipenv + pythonのバージョン管理” が一番楽な気はします。 ただ、インストールの遅さや抱えてる問題もあるみたいなのでpipenvさえあればいいとは思いませんが、優先度は高いというイメージですね。 次は “poetry” です。使う用途としては"pipenv"と同じですが、異なる点で言うとPyPIにビルド・公開ができるという点になります。 PyPIにビルド・公開することはあまりないので、そうなるとpipenvとの使いやすさを比べてどうか?ということになりますが、使いやすさはpipenvに軍配が上がります。 まず、poetryはpython3.9以上でしか使用できません。今の現場はpython3.7(いつか3.11になる予定)なので使えなかったりします。また、ライブラリのバージョンでも同様に使えないものがあります。 他にも仮想環境の有効化がvenvと同様手間がかかったり、vscodeのインタープリター選択画面に出なかったのでパスを通す設定をしないといけないなどがあったりして使いにくさを感じました。私の環境構築方法に問題があるかもしれませんが… おまけとしてRyeはチームよりも個人開発向けなのでやろうとしたのですが、客先PCでは使わないほうがよさそうです。個人で触ってみようとは思います。 それからDockerです。Desktop版をインストールしようとしましたがダメでした。とはいえAWSの実行ではdockerコンテナを利用しているので、ローカルでは使えませんが開発や本番環境では使われているのでdockerfileの中身やdocker-composeをチェックしてみます。ローカルだとどんな使いやすさなんですかね? 前にも話したんですが、pythonやライブラリのバージョンが固定されているような現場では正直不要だとは思いますが、知っておいて損はないかと思いますし、知識はどこかで役立つと思います。 手軽で使いやすいという点では “pipenv” > “poetry” >= “pip + venv"に"pyenv"を足したものかと思いますが、覚え順としては"pip + venv” > “pipenv” > “poetry” がいいと思います。ついでにDockerまで使えればほぼ問題ないという印象です。 ...

2024年3月8日

常駐先のPCでPythonの仮想環境構築って必要なの?

たまには自身の仕事の環境のことでも話をしてみるのもいいかと思って記事にしました。ただ自身の疑問や考えを整理するために書いてるので、大したことは書かないかと思います。人間っぽくていいなと思います。 大前提としてpythonの仮想環境構築について知っておくに越したことはないと思います。客先に派遣される業態ではいつ使うかわかりませんし、自社開発でもライブラリの更新をした方がセキュリティ面でも安心できると思うので、安定板と更新版で使い分けができそうです。 さて、最近新PCに移行することになりました。前のPCでは仮想環境を使ってこなかったので、これを機に仮想環境について調べこの記事を書くことにしました。仮想環境で何を使ったかはあまり触れないと思います。 私の現場では客先常駐ではないですが、お客様先から配布されたPCを使って開発を行います。スペックは特段低いわけではないので、重たい処理や大量のデータを扱わなければ問題ない程度です。ちなみにWindowsです。 ただお客様先から配布されたPCなのでセキュリティは固めです。実はpyenvを使おうとしたのですがインストールがうまくいかずpythonバージョンの使い分けができませんでした。 他にもDocker Desktopをインストールしようとしましたがこちらも無理でした。申請すれば通るかもしれないですが、他にも方法はありますので一旦諦めました。ちなみにWinMerge(ファイル同士の比較)もインストールできませんでした。前のPCは標準搭載だったのですが… ここから本題なのですが、仮想環境を作る必要があるのか?ライブラリの管理をする必要があるのか?という問題です。もちろん客先によっては自由度が高いところもあるので一概には不要だとは思いません。 私の話になりますが、本番環境ではAWSを使っています。開発環境もありますがスコアリングのみであればローカルでvscodeを使用しています。 AWSではDockerfileでpythonとライブラリのバージョンを指定して実行しているのですが、そのバージョンが全てのプロジェクトで統一されています。pythonのバージョンであれば3.7.12、pandasであれば1.12.0という具合です。 こうなるとローカルでも使用するpythonやライブラリのバージョンは固定されるので、仮想環境の構築は不要でとりあえずpipでインストールしてしまえばいい気もします。requirements.txtに吐き出していまえば他の人にも共有できて同じ環境が作れますし… 整理してみましたがやはり不要な気がします。とは言え仮想環境構築で使ったvenvとpyenv(ほぼインストールのみですが…)の使い方もわかりましたし、他のライブラリであるpipenvやPoetryも触ってみようと思います。 次に話すとしたら実際に仮想環境構築したことかAWSについてですかね?ではでは

2024年3月6日

ヨーグルトメーカーで無限にヨーグルトを作って健康を意識する!

“QOL"を意識して生活をしていますか? Quality of lifeという言葉の中には身体の健康も含まれています。その中で体の健康を意識するということで私はヨーグルトを摂取しています。 一応発酵食品の中では腸内環境を良くしてくれる食品の一つだったりしますが、FODMAPという観点ではNGだったりします。また論文によっては賛否があるみたいですが、美味しいので今とこは食べています。 ただヨーグルト(私はR1)を毎日買うと高いのでヨーグルトメーカーと牛乳と種菌で無限にヨーグルトを作ろうと考えました。私はこちらの商品を買いました。 こちらの商品ではプレーンヨーグルト以外にカスピ海や塩麹、甘酒、飲むヨーグルトも作れたりします。結局プレーンしか使ってないのですが… 用意するものは3つだけ 種菌(ヨーグルト100g) 牛乳(1000mlで乳脂肪分3.5%以上がおすすめ) ヨーグルトメーカー 単純に牛乳パックにヨーグルトを入れてスイッチ入れるだけで完成します。が、デメリットが2点ほど存在します。 完成までに時間がかかる(私の商品はプレーンで7時間) 雑菌をなくすため使用する器具(使用するスプーンや蓋)は煮沸消毒する必要がある 少し手間があったりしますがここを気にしなければ無限にヨーグルトを作ることができます。 最初はヨーグルトが必要ですが、それ以降は作ったヨーグルトを種菌にすればいいですからね。 もしヨーグルト毎日100gほど摂取すると考えると月****50400円:140円×30日×12月になります。 これをヨーグルトメーカーで作った場合ですと月****15270:6,930円(メーカー)+140円(種菌)+200円(牛乳1000ml)×約41回(一日100g、10日目に種菌用に100gと考えると1000mlで9日分)になります。 年間で50400-15270=35130円お得になります!もし機器が壊れてしまって買いなおしても問題ないくらいお得になります!飲むヨーグルトだともう少しお得度は下がりますがそれでも十分です。 1人暮らしでもこれくらいお得になるので家族で食べているのであればよりお得になります。おすすめなので興味があればぜひ買ってみてください!ではでは

2024年3月3日

セキュリティを学ぶことができる"TryHackMe"で遊んでみたよ!

最近のニュースでセキュリティに関する漏洩がよく起きている気がします。 外部からの攻撃はもちろん内部からの漏洩も存在します。内部からの攻撃(人的ミス、スパイ等)は防ぐのは難しそうですが外部からの攻撃であれば大体は防ぐことができると思います。 クラウド等であればセキュリティに関するものもありますが、Webサイト等ではセキュリティに弱い部分もありそうな気はします。 セキュリティについて騒がれているのに私は全く知らなかったので少しは勉強しようかと思って"TryHackMe"というサイトで学習し始めました。こちらから学べます。 ただ、こちらは全て英語になりますので翻訳しながら少しずつ進めています。学習はこんな感じです。やる内容と進行度、難易度が表示されています。 少し触ってみた内容では以下の画像みたいな感じです。 左の方ではハッキングの内容や手順を動画付きで説明して、右側では実行する環境を作って手順通りに作業していきます。 まだ始めたばっかりなのでわかっていないことや翻訳しながらで大変ですが、少しずつ学んでセキュリティ意識を高めていけたらと思います。 余談なんですが最近物理学が面白いと思い始めました。理系なので物理学に触れたことはありますが、あまり理解できていませんでした。量子力学はAIと同様発展途中ですが、もしかしたら数十年後には必要不可欠になりそうなので、そっちも知っておくとよさそうです。 今はAIみたいな実用段階ではないですが今のうちに知って、ビジネスにも活かせる段階になった時、有利に働き稼ぐ手段が増える!かもしれないですね(笑)ではでは

2024年3月1日

引き続きfreeCodeCampの機械学習で苦戦している話

勉強していますか! 私は引き続きfreeCodeCampで認定証を取れるよう頑張っているのですが、なかなか難しくて苦戦しています。 現状機械学習プロジェクトで終わってるのがじゃんけんと画像分類と医療費予測ですね 画像分類と医療費予測はそこまで難しくないのですが、じゃんけんと今やってる自然言語処理は苦戦しています。 じゃんけんは4人のボットに60%以上の勝率を出すことがクリアの条件です。 4人のボットはそれぞれ特徴があって(以下グー: “R”、チョキ: “S”、パー: “P"とする) 特定の順でじゃんけんの手を出す 前回出したプレイヤーの手に勝つ手を出す プレイヤーの過去10回分を集計して1番多く出した手に勝つ手を出す 過去2回分(“RR"や"PP"等)のパターンを毎回全て記録し、前回出した手+“次出す手"を過去履歴から一番多い手に勝つ手を出す。(例:過去のパターンで"RR"が8回、“RS"が5回、“RP"が10回だった場合、前回プレイヤーの手が"R"なら"RP"が10回の最多なので"P"に勝つ"S"を出す) この4人に勝率60%以上出せばいいのですが時間がかかってしまいました。ちなみに最終的には画像のような勝率になってました 1人以外は99%以上の勝率になりました(笑)。3人だけ個別で対応して1人は何もしなくてもテストクリアしたので特に対策はしていません。もしかしたら連鎖マルコフモデルを使えばよかったかもしれませんが、力押しです💪 画像分類と医療費予測はChat-GPTに手伝ってもらいました。とは言え簡単な加工とモデルの作成だけだったのですが、コードの中身を全て解説してもらいながら終わらせました。 残りの自然言語処理問題ですね。書籍推薦アルゴリズムとスパム分類ですね。こちらもChat-GPTに頼って解説してもらいながやったのですがうまくいきませんでした… なかなか難しいですがもう少しいい方法がないかChat-GPTとキャッチボールしながら探してみようと思います。気晴らしに他の講座をやるのも手ですね!ではでは

2024年2月28日

freeCodeCampというサイトで認定証でも取ってみる話

E資格が終わって次に何しようかなと思った時にたまたま目が付いたサイト"freeCodeCamp“をやってみました。 一応無料でできるものでテストに合格できれば認定証がもらえます。このようなサイトやCourseraなどで認定証をもらえますが、どこまで効果があるかはわかりません。 ただし、海外でも十分役に立つかなと思っているので学位とかなければ取るに越したことはないかと思います。日本だけでいいなら不要だと思いますが、私は日本だけで活躍するのは危ういと感じているので、海外でも使えそうなものを探していました。 講座はいろいろありますので気になったものを触ってみればと思います。 基本は英語ですが日本語に変えることもできます。翻訳が怪しい部分もありますが、なんとなくわかります。本格的な翻訳も募集しているみたいです。 私はメインはpythonを使っていますのでpythonに関する認定証を2つ取りました。 今は残りのpythonに関する認定証を取得中です。少し難しいですが… これが終わったら他のやつも取ってみようと思います。APIやデータベースはできたほうが楽しそうですからね。 問題としてChat-GPTを使っても問題ない気はします。コードをほぼ任せてみましたが合格できましたので。また、Copilotのような機能があるので気にせず、積極的に利用しても問題ないかと思います。コードの中身はしっかりと理解したほうがいいですが… テストを受ける前に学習をすることもできます。動画での学習と内容チェックですね。 さて、生成AIが出てきてもしかしたらプログラマーやデータサイエンティスなどの業種が将来的になくなるかもしれない時代、さらに日本は少子化により給料も需要も下がるかもしれない時代に突入しているので、今のうちにやれることをやって将来に備えたいですね。 それでは楽しいエンジニアライフを。ではでは。

2024年2月25日

ANTCICADA(アントシカダ)でコオロギラーメンを食べに行きました!

“昆虫食"と聞いて顔をしかめる人は多いと思います。ちなみに私も積極的に食べようとは思いません。某大臣がコオロギなどの昆虫食を進めていましたが、国で進めるのはどんな意図があるんだろうと思っていましたが… 昆虫食のメリットとしては 高タンパクで栄養価が高い コストが低いので生産しやすい 他の動物の飼育に比べて環境に優しい 飼料に加工できる というところだと思います。これだけ聞くと割とよさそうではありますね。デメリットとしては 甲殻類などのアレルギーの人は食べられない 農薬の規制が必要になる 見た目 調べてわかったのですが農薬の規制は初めて知りました。言われてみると毒物は食物連鎖の上に行くほど凝縮されやすいというのがあるので、昆虫の餌(主に植物)には気を付けないといけないということですね。 またアレルギーは"エビのシッポ"と"ゴキブリの羽"の成分が同じと言われるので理解しやすかったです。 見た目はどうしようもないですね。よく提供されるものは素揚げや佃煮が多く、見た目がそのまま出たりするので努力で克服できる気はしません。粉末にすれば別かもしれませんがそれで高タンパク質がとれるのか疑問ですね… さてANTCICADAのコオロギラーメンですがこんな感じです。虫が苦手な方は注意してください。 コオロギの素揚げが1匹ですがそれ以外は普通の醤油ラーメンです。味は美味しいですが匂いが少し独特で虫?か土?のような匂いを感じました。 ちなみに合計160匹ほどのコオロギを使っているみたいで、日ごろ餌を厳選して育てたコオロギを出汁と醤油と油にして作ってるみたいです。出汁に使われたコオロギの山を出され「撮っていいよ!」と言われましたが流石に写真に収める気にはなれませんでした(笑) この店の装飾として飼ってるコオロギやはちみつ漬けにした虫、蛇などが飾ってありました。また店を開業した方は虫の論文も読んでるみたいで、本や絵本が飾ってありました。 ちなみにこのお店は通販もやっていますがラーメンと醤油は売り切れています。見た目ではわかりにくいし、味もいいですからね。また、ラーメンの提供は日曜のみなので普段は食べられません。 私も小さい頃は平気でしたが大人になるとやっぱり無理だと感じますね。籠に入っていたり標本にされているのは問題ないですが、触れられるような状況だと無理だと感じます。生態系とか特徴が面白い虫もいるので興味はあるんですけどね… ここで最初に戻るのですが昆虫食を食べることのメリットは”高タンパク“であることです。しかも少ない量で。 体に良い食事をするのであれば牛、豚、鳥などのタンパク質に加え、食物繊維やビタミン、糖質等たくさんの食物を摂取する必要があります。 タンパク質を昆虫食に変えることで食べる量が減るので、その他の栄養素を取りやすくなる(食べられる量が増える)と考えています。 ただ、出汁にしたり粉末にすると美味しいけど高タンパク質というメリットは失われるのでは?という気がします。かといって素揚げにしたものを食べるのには嫌悪感から難しい。 ここを上手く高タンパク質が摂取でき、なおかつ見た目に嫌悪感を感じにくい料理が提供できればいいんだろうなという気がします。虫の構造を把握し、殻や頭、足などを適切に処理し、タンパク質を消さず提供できるような料理人はどこかに存在するのでしょうか… 皆さんも興味があれば食べてみてください!味は美味しいので後は勇気のみ!ではでは

2024年2月23日

E資格お疲れさまでした!合格したかどうか五分五分…

2024#1のE資格お疲れさまでした!個人的には五分五分くらいの出来でした。振り返るとあの箇所間違ってたなと思うとこもいくつかあります。 今回テストを受けてみてわかったことは、G検定同様言い回しが少し独特に感じました。言い方を変えると表面だけの理解では解けないと感じました。 全ての問題がそうではないですが4割くらいがそう感じました。 また問題数は103問の120分ですがある程度理解して入れば、計算問題があっても20分くらいは余る気がします。 シラバスを見て記事に簡単にまとめたりしましたが、全く出ない内容(コンテナやCTC等)があったりして少し困惑しました。学べてよかったとは思いますが… 次回のシラバス(こちらからダウンロードできます。)見る感じだと数学の内容はあまり変わらず、機械学習はバッサリ削られてる雰囲気です。深層学習も音声処理とメタ学習はバッサリですね。能動学習と連合学習は元からなかった気がします。 こうやってバッサリカットされたということは他の箇所が頻出するということなので、深層学習はより理解を深めたいといけなさそうですね。特に生成AIに関するGPT系やGNA系は最近の論文も確認したほうがよさそうですね。 今回の学習で色んな事が学べました。Dockerはローカルで使ったことがないので触ってみよう!とかHagging Faceで配布されてるモデル使って自然言語処理のプログラム作ってみよう!とか画像認識でいい使い道ないかな?とか考えてました。 一先ず資格が終わって勉強から解放されたので他にやりたいことをやっていきたいと思います。ちなみに試験後にコオロギラーメン食べてきたのでその話もしようと思います。ではでは!

2024年2月20日

E資格受験前なので復習がてら学んだことをざっくり振り返る ~ 深層学習後編、開発環境編~

前回の続きになります。深層学習の後編になります。もう一息です。 まずは生成モデルと識別モデルについてです。 識別モデルは入力Xから出力Yへの直接的なマッピングを学習することを目指しています。このマッピングは条件付き確率P(Y | X)を使用して表される。与えられた入力データに基づいて出力ラベルの確率を最も正確に予測する。 生成モデルはデータの同時確率P(X,Y)またはデータの周辺確率P(X)を通じて行われる。観測されたデータがどのように生成されるかの理解を深め、新しいデータポイントを生成する能力を持つこと。 ナイーブベイズ:P(X | Y) = ΠnP(xi |Y)、P(xi |Y)は特徴xiが与えられたクラスYに属する条件付確率 GAN:生成器Gがランダムノイズからデータを生成し、識別器Dが実データと生成データを区別しようとする。minG maxD V(D,G) = ExPdata(x) [logD(x)] + EzP(z) [log(1 - D(G(z)))]、V(D,G)は識別機Dと生成器Gの値関数、Pdataは実データの分布、Pzは生成器の入力となるノイズの分布。 次はVAEとVQ-VAEについてです。 VAE(Variational Autoencoder):入力データを低次元の潜在空間にエンコードし、その潜在表現から元のデータを復元するように学習するオートエンコーダの一種。潜在空間における確率分布をモデリングすることにより、新しいデータの生成も可能。 データxから潜在変数zの分布qΦ(z | x)を推定し、デコーダを用いてzからxを再構築する確率pθ(x | z)を最大化する。 潜在変数zの事後分布qΦ(z | x)が事前分布p(x)に近づくように制約をかける。そして以下の損失関数を最大化する。 L(θ,Φ; x) = Eq(z | x)[logpθ(x | z)] - Dkl(qθ(z | x)||p(x))、DklでqΦ(z | x)とp(z)の分布の類似度を測る。 VQ-VAE(Vector Quantized-Variational Autoencoder):VAEの概念を拡張し、潜在空間において離散的な表現を使用する。ンコーダが出力する連続的な潜在表現を、事前に定義された離散的なコードブックにマッピングすることにより、潜在表現をベクトル量子化する。 エンコーダが出力する潜在変数ze(x)を、コードブック内の最も近いコードベクトルzq​にマッピングする。損失関数は以下のように定義する。 L = logpθ(x | zq) + ||sg[ze(x)] - zq||^2 + β||ze(x) - sg[zq]||^2、sg[⋅]はstop-gradient演算子、バックプロパゲーション時にその入力に対する勾配の計算を停止させる。βはハイパーパラメータ 使用例:画像生成や画像編集、データ圧縮、音声合成と音声変換、テキスト生成とスタイル転送、異常検知、強化学習 次はDCGANとConditional GANについてです。 DCGAN(Deep Convolutional Generative Adversarial Networks):CNNを用いたGANの一種、プーリング層を使わずに、ストライド畳み込みと逆畳み込みを使用する。 学習済みモデルは、未ラベルの大規模データセットから有用な特徴を自動で抽出するでき、他のタスクに転移学習で利用可能。 バッチ正規化をGeneratorとDiscriminatorの両方に適用することで、学習過程を安定させる。 ...

2024年2月17日