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日

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

前回は応用数学や機械学習につてい振り返ったので、今回は深層学習について振り返ります。おそらく長くなりそうなので2分割しようと思います。 まずは**全結合型ニューラルネットワーク(Fully Connected Neural Network, FCNN)**についてです。 入力層、隠れ層、出力層から構成され各層の全てのノードが前の層の全てのノードに重み付きの接続をしている。 前向き伝播 (Forward Propagation):各ニューロンの出力は、前層の出力、重み、バイアスに基づいて計算され、活性化関数を通過する。活性化関数については後述します。 誤差逆伝播 (Backpropagation):出力層の予測値と実際の値との差を計算し、その差を用いて重みを更新する。連鎖律を用いて各重みに対する誤差の勾配を計算し、勾配降下法等を使用して重みを更新する。 問題点と解決策 過剰適合:機械学習と同様、正則化(L1、L2正則化)やドロップアウトを使用する。 勾配消失/勾配爆発:層を深くしたことで勾配が急速に減少または増加する問題。解決策には重みの初期化方法の工夫(He初期化など)、バッチ正規化、残差接続(ResNet)などがあります 次は損失関数の最尤推定による条件付き分布の学習についてですが、前回の機械学習でも触れたので軽く触れる程度にします。 回帰問題:ガウス分布の尤度を最大化することは、平均二乗誤差を最小化することと同等。損失関数はL(θ) = 1 / nΣ(y - f(x, θ))^2、yは実測値、f(x, θ)は予測値 分類問題:多クラス分類では、カテゴリカル分布の尤度を最大化することが、クロスエントロピー損失の最小化と同等。損失関数はL(θ) = -ΣnΣCylogf(x, θ)、yはi番目のデータがcに属するかを示す指標変数、f(x, θ)はモデルによるクラスcへの所属確立への予測。 次は活性化関数についてです。主に隠れ層と出力層で使われます。 シグモイド関数:σ(x) = 1 / (1 + e^-x) 出力が0から1、二値分類問題の出力層でよく使用されるが、勾配消失問題のため隠れ層ではあまり使用されない。 Softmax関数:Softmax(x) = e^x / Σe^x 出力層の多クラス分類で使用、出力値の合計が1になるようクラスに属する確率を計算する ReLU関数:ReLU(x) = max(0, x) 出力が-1から1、原点に対して対象なので隠れ層でよく使われる。 Leaky ReLU関数:LeakyReLU(x) = max(αx, x)、αは小さな正の定数 ReLUの改良版でx < 0で微小な勾配をすることで、ニューロンが不活性になり,任意の入力に対して出力0だけになる問題を緩和。 双曲線正接関数(ハイパボリックタンジェント):tanh(x) = (e^x - e^-x) / (e^x + e^-x) 計算が効率的で勾配消失問題も緩和するので隠れ層でよく使用される。 次に誤差逆伝播法についてです。前述で述べた個所は省略します。 計算グラフ:この項目については割愛しますが、調べると表は出てきますので、誤差逆伝播法の計算がどのようなものかがよくわかります。 ...

2024年2月12日

E資格受験前なので復習がてら学んだことをざっくり振り返る ~ 応用数学と機械学習編 ~

E資格で出る内容として"確率や情報理論の計算"、“機械学習”、“深層学習”、“開発運用環境"があります。こちらからシラバスをダウンロードして確認できます。LaTeXを導入してないので数式がかなり見にくいですが、よくわからなければ調べてみてください。 まずは確率・統計の式です。 ベルヌーイ分布:P(X=x) = p^x(1−p)^(1−x)、xは結果の値(成功=1、失敗=0)、P は成功確率を表す。例としてスパムメールフィルタリングやクリック予測で使用される ガウス分布(正規分布):P(x) = 1 / √(2πσ^2) exp(-(x-μ)^2/2σ^2)​、ここでμは平均、σ^2 は分散を表す。例として異常検出や回帰分析で使用される 多項分布:P(X1=x1,…,Xk​=xk​) = n! / x1​!…xk!​ p1^x1…pk^xk、期待値E[X] = xp、分散V[X] = E[X^2] - E[X]^2​ = xp(1 - p)、共分散Cov(X,Y) = Σxy - μxμy、相関係数 r = σxy / σxσy(-1~1の範囲)ここでμは平均、σは標準偏差を表す。例としてテキストデータやカテゴリデータのモデリングで使用される。 ベイズ則(条件付き確率):P(A∣B) = P(B∣A)P(A) / P(B)、例として機械学習モデルのパラメータ推定などで使用される。 次は情報理論の式です。 自己情報量:I(x) = - logP(x)、底は2でP(x)はあることが起こる確率→確率が小さくなるほど、情報量は大きくなる 平均情報量(エントロピー):H(X) = -ΣP(x)logP(x)、底は2でP(x)はあることが起こる確率、エントロピーが高いほどランダムで予測が難しくなり、データの圧縮や決定木などの機械学習モデルでの特徴選択に使用される。 結合エントロピー:H(X,Y) = -ΣP(X,Y)logP(X,Y) → XとYがお互いに独立であればH(X, Y) = H(X) + H(Y)が成り立つ。XとYは事象 条件付きエントロピー:H(X | Y) = - ΣxΣyP(X = x | Y = y)P(Y = y)log(P(X = x | Y = y)) ...

2024年2月8日

Google Cloudで生成AIやクラウドの使い方に関するゲームで遊んでみよう!

こちらからゲームに参加することができます。 アクセスコードも画面に出ていますので入力して入ってください。 アクセスコードを入力するとゲームに参加できますので一つ一つ完了していきましょう! 言語の設定はここから変換できますので、気になる方は日本語に変換してください 中身はゲームというよりはGoogle Cloudの使い方を教えてくれるものでした。GCPに使い慣れていないせいか苦戦はしましたが、少しづつ進めてます。クリアするとチェックが付くみたいです。 Level1ではGoogle Storage、BigQuery、CloudFunction等の使い方を学ぶことができます。 今のところ無料で出来ていますのでもう少し進めてみようと思いますが、ゲームという観点ではAWSのほうが楽しいかもしれないですね。街の発展ができますので AIに関する技術は確かに重要ですが、クラウドを扱う知識はもっと必要になるかと感じます。AIだけでなくサービスの提供にも必要なので知っておいて損はないと思います。 クラウドはAWSかGCPかAzureのいずれかを知っていれば十分な気はしますが、もし興味があれば触ってみると自身の幅が広がるかなと思いますので。ではでは

2024年2月3日

低温調理で健康にいい料理を作り始めた話

最近、低温調理器を買いました。私が買ったのは芯温調理器になります。こちらから買えますが楽天でしか扱ってません。 ちなみに普通の低温調理器はこちらになります。違いとしては以下のようになります。 芯温調理器 メリット 水が不要で掃除や片付けの手間がかからない 中心温度から調理時間を計るので到達時間を考えなくてよい 幅を取らない デメリット 容量は少なめ(2,3食分) 低温調理が完了した場合、すぐに食べるか冷蔵しないと菌が繁殖しやすい 低温調理器 メリット 使う容器によって多くの物を低温調理できる 調理完了後でも保温できるので放置しても安心 wifiで操作や温度の確認ができる デメリット 水が必要で掃除や片付けに少し手間がかかる 容器によっては容量が大きいので幅を取る どちらでもいいですが、普通の低温調理器のほうが便利なのかなという印象です。 また、ジップロックのようなパックが必要なので注意が必要です。 そもそもなぜ低温調理をすることになったかですが、健康により気を付けるようになったのが原因です。 私はもともと健康に関しては気を使っている方だと思います。食事はキノコ類や納豆はよく食べますし、野菜も取るようにしています。 運動については4か月前ぐらいから散歩からバーピーに切り替えて、より運動の負荷を上げるようにしています。ちなみに国も運動について推奨しています。こちらから見れます。 健康に気を付けていたのですが、最近知った知識でお肉の焼き加減によってはAGEsが増加して健康に影響を及ぼすということがわかりました。 AGEsとは老化物質の一つで「こげ」とも言われます。これを多くとることによってあらゆる病気のリスクが上がると言われます。おそらく外食や弁当などを頻繁に食べてる人は多く摂取していると考えられます。 私は普段料理して食べているので一般の人よりは少ないとは思いますが、調理の仕方で増えるみたいなので低温調理をすることで減らせることがわかって、買ったという経緯になります。 ちなみにAGEsが増えるのは100度を超えるような調理なので、煮るや蒸すは大体70~80度が多いのでAGEsが増えないと思います。そのため、無理に買う必要はないのですがレパートリーを増やしたかったので買いました。 肉も生で食べたほうが健康的ですが普通は無理ですね。食中毒となる菌がスーパーに並んだ時点であるので調理することが前提となっています。では調理に最適な温度はどのくらいなのか?、美味しく食べられる温度はどのくらいなのか?ということを考えます。 ちなみに食中毒となる菌を食べられるまで減らせる最低の温度が55℃みたいです。低温調理をする場合、63℃だと30分以上の加熱が必要とされています。こちらから参照できます。国が出しているので信頼はできるかと思います。 他の温度かつ大きさによっても加熱時間が変わります。それはこちらが参考になります。また、滅菌できるわけではなく、あくまで食べられるまで菌を減らすだけですので注意が必要です。 後は美味しく食べられる温度はタンパク質の話が関わってきますのでまた、別のタイミングでお話ししようかと思います。ではでは

2024年2月3日

AWSCloudQuestでゲーム感覚でAWSを触ってみよう!

私の現場ではAWSを使っています。全てを1から作ったわけではないですが、StepFunctionやLambda、CodeCommitなど基本的なものは使ってますし、必要に応じて作成したりしています。 ある程度使っていますが、たまたま見つけた記事で興味が出たので"AWSCloudQuest"というサービスを触ってみようかと思います。こちらからスキルビルダーのアカウントを作ってサインインしてみましょう! このサービスはゲーム感覚でAWSの仕組みを理解し、実際に操作して、AWSの認定も取ろうというサービスになります。実際にプレイするとこんな感じになります。初期画面がこちら この後、アバターの作成に入ります。アバターを作り終えると街に放り出されます。画面では何もないですが、初めは誘導されますのでそれに従って行動してください。 まずは最初の課題ですね。話を聞いて何をするのか把握します。私はAWSを触ったことがあるので多少わかりますが、ここで単語がわからなくても問題ありません。 まずは"学習"からです。ステップを進めて内容を確認しましょう。また、左の動画からAWSのコンセプトや使用するサービスについてがわかります。今回はS3についての内容です。 次は"計画"ですね。左の"実践ラボの目標"は実戦で行う内容で、“DIY"は今回の依頼内容になります。これを把握しておきます。 次は"実戦"になります。AWSコンソールを押して、専用のアカウントでAWSにログインしますのでステップを見ながら作業を進めていきます。 最後に"DIY"になります。これが本来顧客が求めていることなのでこれができればクエスト完了です。先ほどのコンソールからDIYアクティブをしましょう。完了したらバケット名を入力して検証をクリックします。問題なければクリアメッセージが出て終了をクリックします。 クリアすると報酬を受け取ります。なんかいろいろ解放されたみたいです(笑)。 これが終わったら次のクエストが出るのでまたクエストをこなして、街を発展させていくみたいです。 このサービスは一部が無料なので全てこなしたければサブスクに登録する必要があります。私はまだ登録してないですが、もう少し遊んでみて楽しければ登録してみようかと思います。 これを機にスキルビルダーで認定取得するのも面白そうですね。ではでは

2024年1月30日

Python3.12で仮想環境を整え、Open Interpreterを使って少し苦戦した話

話題としては遅い気がしますが、初めてOpen Interpreterを使いました。そのことについて記載しようと思います。 Open Interpreterについて 最近社用PCのPythonバージョンを3.12に上げました。なので自身のPCのPythonバージョンも3.12に上げることにしました。また、同タイミングでOpne Interpreterのことを知ったので使ってみようとしました。 私はCode Interpreterのことは知っていたのですが使ったことはなかったです。違いがあまりわからないのですが、Code Interpreterのオープンソース版がOpne Interpreterのようです。 Open Interpreterを実行した際、自動でライブラリをインストールされることがあるみたいです。まずは仮想環境を作ることにしました。 仮想環境の作成とライブラリインストール 今回仮想環境で使ったライブラリは"pipenv"になります。特にこれといった理由はないです。Condaでもvenvでもいいとは思います。pipenvの使い方はこちらを参考にしました。 Pipenvをインストールし、必要なライブラリをインストールします。初期化しなくてもライブラリのインストール時に勝手に作られるので、意図的にPyhonのバージョンを変えなければ初期化しなくても問題ありません。 もし、ライブラリのインストール時に “RuntimeError: Failed to lock Pipfile.lock {ライブラリ名}” というエラーが出た場合は一度仮想環境を削除して、再度作成するとうまくいくと思います。私の経験談なのでサンプル数1ですが… 仮想環境を作った時はそこのインタープリターを選択しましょう。処理の実行が失敗しますので… 仮想環境ができたのでいよいよOpen Interpreterをインストールします。“pipenv shell"でアクティブ化し、“pipenv install open-interpreter"を実行します。 Open Interpreterインストール時のエラー対処 右のエラーが出ました。“ERROR: Couldn’t install package: {} Package installation failed…” これだけ見ても原因は変わりませんが、面倒なのでコマンドを実行した後の行から全てコピーしてきてテキストファイルに張り付け、Chat-gptに聞いてみました。そしたら下記の回答が返ってきました。 これ見たときに「Python関係ないのに必要なの?」と思っちゃいました。だってC++とRustですからね。ちなみにRustを聞いたとき浮かんだのはゲームのほうでした(笑) 一応目視でも似たようなエラーが出ているかを確認してみると以下の2つのエラーが見れました。 error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools”: https://visualstudio.microsoft.com/visual-cpp-build-tools/ ERROR: Failed building wheel for tiktoken、ERROR: Could not build wheels for tiktoken, which is required to install pyproject.toml-based projects ...

2024年1月27日

遺伝子検査の結果が返ってきたのでどんなものか見てみよう!

こちらの記事で遺伝子検査について書いてみました。 その時はHaploというDNAから民族のルーツを知る検査を行いました。実はこちらの検査が返ってきた後、Genesisという体質や疾患リスクを調べる検査とMyselfという遺伝子的な個性と自己分析による結果の比較ができる検査があります。 Haploはセールで買えましたが、実はGenesisとMyselfは1万引きで検査することができます(2検査で合計1万)。更に検査結果が出ていれば料金さえ払えば即座に結果が表示されます。 ちなみにHaploはこんな感じです。人種や移動経路、ゆかりのある苗字、血縁で近い人が表示されるページもあります。 Myselfはこんな感じです。遺伝子で出た結果とアンケートで出た結果がわかります。環境などにより遺伝子結果と変わってる可能性はあります。この結果はGenesisと被っている部分もあります。 最後にGenesisです。体質と疾患リスクがわかります。運動能力や脳の処理の力、性格、性別ごとの病気などが出ます。もちろん可能性の話ですが 能力であれば鍛えることで苦手を克服することができますし、病気も栄養や睡眠を適切に取れればかかりにくくなると思うので、気にしつつも注意していけばいいかと思います。逆にかかりにくくても健康的な生活を送れなければ疾患リスクがあがりそうです。 まだ検査が返ってきて軽く見ただけなので、もう少し調べてみたいですね。ではでは

2024年1月25日

Gemini-proを使って簡単なチャットボットを作ってみよう!

生成AIがどんどん進化していく中でGoogleが新たなモデルを出しました。それが"Gemini-pro"です。 ちなみにこちらのページの下の画像リンクからGeminiが搭載されたBardを使うことができます。 チャットボットを作るにはAPIが必要なのでまずはAPIキーを取得します。キーはこちらから取得できます。画像の"Get API key in Google AI Studio"のリンクをクリックします。 ページが移動したら"Get API key"タブから"Create API key in new project"をクリックすればAPIキーを取得することができます。これでチャットボットの準備ができました。 次にGoogle Colaboratoryを起動します。APIキーの設定とモデルの取得と機械学習webアプリケーションを設定するだけで使うことができます。今回は"Gradio"を使うことにします。他のアプリもありますが、いつか使ってみたいですね。 コードは以下のように設定します。“YOU’RE_APIKEY"に取得したAPIキーを入れてください。 !pip install gradio import gradio as gr import google.generativeai as genai # APIキーの設定 GOOGLE_API_KEY = “YOU’RE_APIKEY” genai.configure(api_key=GOOGLE_API_KEY) # Generative AIモデルの初期化 model = genai.GenerativeModel(“gemini-pro”) # チャットボットの動作を定義 def chatbot(prompt): # Generative AIモデルを使用して推論を実行 response = model.generate_content(prompt) return response.text # Gradio UIの設定 iface = gr.Interface( fn=chatbot, inputs=gr.Textbox(type=“text”, placeholder=“Press Enter to Submit”), outputs=“text”, live=True ) ...

2024年1月22日