セキュリティを学ぶことができる"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日

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日

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日