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日

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日

生成AIでプロンプトを使うときに大切な26項目

2023年12月16日にプロンプトを使うときに最適な支持を出す「26の指針」が発表されました。 こちらから確認できます。対象のモデルはLLaMA-1/2とGPT-3.5/4が対象になります。 その指示の効果などはこちらのGithubで確認することができます。そして指示については以下の項目になります。 LLM使用時のコミュニケーション: 礼儀的なフレーズ(「お願いします」「もしよろしければ」「ありがとう」)は不要。直接的な言葉遣いをする。 対象者の明示: 「専門家向け」といった対象者をプロンプトに含める。 複雑なタスクの分解: 難しいタスクは、簡単なプロンプトの連続に分けて実行する。 肯定的な指示: 「~する」という肯定的な指示を使用し、「~しない」という否定的な表現を避ける。 明確化と理解の促進: 特定のトピックを簡単な言葉で説明する。11歳の子供に説明するようにする。初心者向けの説明を行う。エッセイ/テキスト/パラグラフを5歳児に説明するように簡略化する。 報酬の提示: 「より良い解決策にはxxxドルのチップを払う」と報酬を明示する。 例題主導型のプロンプト: 数例に基づくプロンプトを使用する。 プロンプトのフォーマット: 「###Instruction###」で指示を開始する。必要に応じて「###Example###」や「###Question###」を追加する。指示、例、質問、文脈、入力データを区別するために改行を使用する。 指示的なフレーズの使用: 「あなたのタスクは」「あなたは必ず」といったフレーズを含める。 ペナルティの提示: 「あなたはペナルティを受ける」というフレーズをプロンプトに組み込む。 自然な回答の促進: 「自然で人間らしい方法で質問に答える」というフレーズを使用する。 ステップ・バイ・ステップの考慮: 導入的なフレーズとして「ステップ・バイ・ステップ考える」を使用する。 バイアスのチェック: 「あなたの回答にバイアスがかかっていないか、固定観念によるものではないかを確認してください」というフレーズを追加する。 情報の精密化: AIモデルが必要な情報を得るまで、ユーザーに繰り返し質問するよう指示する。 理解度のテスト: 特定のトピックやアイデアについて尋ね、ユーザー自身の理解度をテストする。 モデルへの役割割り当て: モデルに特定の役割を割り当てる。 区切り文字の使用: 区切り文字を使用する。 単語やフレーズの繰り返し: プロンプト内で特定の単語やフレーズを複数回繰り返す。 思考の連鎖と例示: CoT(Chain-of-Thought)と例示を組み合わせる。 出力プライマーの使用: 望ましい応答の開始部分でプロンプトを終了する。 詳細な記述の要求: 必要な情報を提供し、[トピック]について詳細な[エッセイ/テキスト/段落]を書くよう指示する。 文体の維持における修正: ユーザーの送信したすべての段落を見直し、文法や語彙を改善するよう指示するが、文体を変えない。 複雑なコーディングプロンプト: 複数のファイルにまたがるコードを生成する際に、指定されたファイルを自動的に作成するよう指示する。 一貫性のあるテキスト生成: ユーザーが提供する出発点から、LLMが一貫性を持ってテキストを生成するよう促進する。 生成要件の明示: モデルがコンテンツを生成するために従うべき要件を、キーワード、規制、ヒント、または指示の形で明確に示す。 サンプルに基づくテキスト作成: 提供されたサンプルに似たエッセイや段落などのテキストを書くよう指示する。 ただ、英語での調査でモデルも一部だけなので参考程度で考えたほうがいいかなという気はします。日本語でやる場合は、他の方法などもあるかもしれないですね。

2024年1月18日

E資格まで後1ヵ月なので頑張ろう!

さて約1ヵ月後にE資格が迫ってきました。そろそろ本気で取り掛からないとなと感じています。 せっかくなので受ける経緯とどう勉強したかを書いてみようかと思います。 そもそも私はG検定を受けていました。それが1年前ですが転職を考えたときに実務の部分が薄く感じたので資格で補強しようと考えました。 無事G検定は2023年3月頃に合格しました。その直後ですが、とあるメールが届きました。E資格の資格を受ける料金が割引されるという内容でした。 ちなみにE資格は割とお金がかかるものになってます。会社によっては何十万とかかったりします。もちろん国の補助金で安くなったりする場合もありますが、それでも10万以上かかるのが普通です。 ちなみに私はStudy-AIという企業様のe-ラーニングを受けていました。入会料金が3万で月々3千円くらいです。かつ、受験料が3万ぐらいなので最短だと合計7万5千くらいになると思います。これが企業の講習では最安かと思います。大学の講義を受けるなら別かもしれませんが… 私が受験資格を得たStudy-AIという企業様の講習内容ですがざっくり以下になります。 応用数学 機械学習 深層学習-前編 深層学習-後編 E資格試験対策 G検定でも上記の内容はでましたが、E資格ではより詳細でコードも含めた内容となっています。 また、1~4ではレポートの提出とテストの合格が必須条件になっています。 私が提出したレポート内容ですが、配布されたコードの実行キャプチャとビデオ講義の内容で大事な個所をまとめました。 テストの内容は講義で書かれていないことばかりですが、内容を把握していれば問題ないかと思います。ただし、間違っても正しい解答はわからない上にテスト実施は5回までとなっているので少し慎重になったほうがいいかもしれません。 解答料金やテスト実行回数増加料金(いずれも3千円ほど)払えばやりやすくなるかもしれませんが… 1~4まで終わるとE資格の修了者ナンバーがもらえます。ただし、修了者ナンバーをもらうまでの期限があるのでそれまでにレポートの提出とテスト合格しないといけません。大体E資格受験の1ヵ月前までが期限になります。 修了者ナンバーをもらえればこちらからアカウントを作成して、申し込みをし、受験料を払えば当日受験することができます。 果たしてこの資格が役に立つのかといえば微妙かもしれませんが、実際に手を動かすきっかけになるかと思うのでありかもしれません。また、今ならテストについては画像キャプチャしてGPTにでも聞けば解答を得られるかもしれないですね、やったことないですが… ブログの更新が遅くなりましたが引き続き勉強続けていきたいと思います。ではでは

2024年1月17日

Claude(クロード)という新しい生成AIを触ってみたよ

生成AIの進化がすごい昨今ですが7月頃に出たAnthropic社のClaudeという生成AIを触ってみました。 一応聞いてみましたが、やはり英語のほうが得意みたいですね。とはいえ日本語も対応しているみたいなので少し触ってみます。 Chat-GPTとどう違いがあるのかわかってなかったので聞いてみたら、こんな感じの回答をもらえました。Chat-GPTは会話重視ですがClaudeは情報提供重視みたいですね。ただ、情報提供だと曖昧なので少し深堀してみようと思います。 なるほど、こんな感じですか。とはいえChat-GPTと大きく違うかと言われるとまだよくわからないのですが… 次は最新情報の日付を調べてみましょう。Chat-GPTは2023年の4月時点の情報だったと思いますが、こっちはどうでしょうか? あまり的を得ない回答でした。もう少し具体的な日付を出せるようやってみましょう。最近起きた能登半島の地震について聞いてみました。 一応2022年のデータはあるが詳しい情報まではないという感じですね。最後にファイルの確認をしてみましょうか。 裁判の判例ファイルをアップしてみたのですが、合ってそうです。ちなみにこれ無料で使えています。Chat-gpt3.5だと判例は読み切れなかったかと思いますので、コスパに対する性能は高そうです。 今回はこれくらいで終わりにしようと思います。最近の進化は凄すぎてなかなか追うのは難しそうです。ですが、時代に取り残されないよう活用できる側にまわるため色んな情報を取り入れていきましょう!ではでは

2024年1月10日