サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
WWDC25
qiita.com/FukuharaYohei
RAGの精度改善するために何があるかを学びました。基本系のNaive RAGを知っている人向けの記事です。 方法が多すぎるので、Youtubeの「RAG From Scratch」を中心に少し整理してみました。LangChainをよく使っているので、LangChain出典が多いです。 全体像 まずは、RAGの全体像。Indexingが同じ流れにあるのが少しわかりにくいのですが、実行タイミングとしてはRAGの前準備としてやっておきます。 画像出典: RAG from scratch: Overview もう少し粒度を細かくした図です。 画像出典: RAG from scratch: Overview 表形式で分類します。Generationだけ少し特殊です。 大分類 中分類 内容
BERTを勉強していてTransformerについて整理しました。モデル部分は理解しましたが、訓練ジョブを流す部分などはほとんど見ていないですし解説もしていません。 seq2seqについては記事「【Keras入門(7)】単純なSeq2Seqモデル定義」で以前解説をしました。 seq2seqとAttentionについては記事「[Attention入門]seq2seqとAttentionの解説(TensorFlow)」で解説しました。 もともとは以下のオンライン講座を受講していて、Transformerに関する理解を深めようとしたのがきっかけでした(オンライン講座にはTransformerについても含んでいたが、より深く理解したいと考えました)。 以下のTensorFlowのチュートリアルを使って学習しました。学習途中にチュートリアルが更新され、この記事と一部違う点があります。 理解にあたり以
機械学習のモデル解釈手法を学びました。ほとんどは、書籍「機械学習を解釈する技術」から学んでいます(良書!)。ここに書いているのは、個人的視点でつまみ食いしている感じなので、興味を持ったら購入おすすめです。 一部、scikit-learnからも学んでいます。 内容 全般 解釈手法一覧 下表が解釈手法の一覧です。 解釈手法 解釈手法(正式名) 内容 視点
KaggleのTitanicチャレンジで前処理をスムーズにできないかを調べていたら、知らないことも多く勉強となりました。もともと、標準化と正規化という単語すら毎回思い出している程度の理解度だったのでいい機会となりました。標準化と正規化程度しか知らなかったですが、意外と処理方法が多く異常値への考慮で多くの知見を得ることができました。 scikit-learnの数値系特徴量に対する前処理(preprocessing)モジュールを整理しています。基本的にscikit-learn ユーザガイド 6.3. Preprocessing data中心です。本当はカテゴリ型変数もやろうと思ったのですが、数値系だけで書くこと多すぎたので他記事に書くと思います。 scikit-learnのユーザガイドは素晴らしいのだけど、一方で単語で理解に時間がかかることも多いですね(私の英語力や数理的能力不足)。 カテゴリ
Kaggleで入門である「タイタニックコンペティション」に挑戦しました。だいたい、目安である8割超えを達成しました。1から2ヶ月程度で終わらせようと思っていたのですが、勉強しつつやったら半年以上かかってしまいました。試したことがなかなか精度向上につながらず、想像以上に厳しかったです。 サマリ いろいろなモデル試したり、ハイパーパラメータの調整していけば、ガンガン精度が上がるかと思っていましたが、まるでそんなことなかったです。一番、有効だったのは特徴量エンジニアリング。前処理は重要ですね。 期間: 7ヶ月程度。途中忙しかったり別の勉強をしたいた期間あり。 時間合計: 多分150時間くらい使っている気がします。今回計測していないので大きくずれている可能性あり。 進め方: 最初はKaggleに慣れながら、とにかくデータ探索。いろいろ特徴量エンジニアリングをして様々なモデルを試す。一通りやりきった
Pandasの DataFrame でSettingWithCopyWarningの警告の意味と対処方法について書きます。 DataFrame使っているとSettingWithCopyWarningによく遭遇していました。その度にその場しのぎの修正をして対応していましたが、さすがにそろそろ根本的に理解しないと時間がもったいないと思い、この記事で整理しました。 公式Pandasのヘルプと偉大な先人が書いてくれた以下の記事が非常にわかりやすいです。この記事では、簡潔に内容を書きます。 結論 結論から先に述べます。 暗黙のCopyをやめる。そのためにChain Indexingをやめる。警告をなくすにはそれだけです。 現象 SettingWithCopyWarningが起こる一例を最初に紹介します。 シンプルなDataFrameを作ります。
手法 1. Filter Method Filter Methodは統計的な手法(分散やχ二乗検定など)で特徴量の評価・選択をします。他の手法に比べると計算量が少なく、最初に足切りで実施するものだと考えています(経験浅いのであまり根拠なし)。 1.1. 低分散変数の削除 分散が低ければ、説明変数としての意味ないと考え特徴から削除する方法です。VarianceThreshold関数を使います。 今回の例では分散0としており、まったく変動していない特徴を対象とします。ベルヌーイ分布の分散であるp(1 − p)を使うのもありかと思います。 分散0はPandasのget_dummies関数でオプションdummy_naを使った時に出てしまいました。欠損値がある特徴があったため、get_dummies関数を使ったのですが、欠損値がない特徴量もNaNの列ができてしまい、すべて値が0で分散が0の列ができて
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
学んだことサマリ 以下のことを学びました。数式も交えて丁寧に説明してくれます。また、数理的に難しい部分は省略してくれます。今まで私はつまみ食い程度に色々と勉強していましたが、体系的に学べるとすごくスッキリしました。 教師あり学習 線形回帰・ロジスティック回帰・ニューラルネットワーク・SVM 教師なし学習 K-Means・主成分分析(PCA)・異常検知 特別なアプリケーション・トピック レコメンデーション・ビッグデータ対応 応用 バイアス/バリアンス・正則化・アルゴリズム評価・学習曲線・エラー分析・天井分析 上記を学んだ結果、データサイエンス系の課題(例:部屋の大きさ、駅からの距離などの賃貸情報から家賃を予測)があったときにどんなアプローチで解決していくかが検討できるスキルが身につきます。ただ、Octaveという実務で使われているのがあまり聞かないプログラム言語なので、システム実装の即戦力と
「はじめてのパターン認識」、通称「はじパタ」の第2章の解説です。 13ページ程度のくせに読み解くのに時間をかなりかけました・・・ 躓きポイントは2点あって、ブートストラップ法で書かれている計算式、最後のバイアス・分散分解です。マクローリン展開など文系人間にとっては難しい内容も含んでいて時間がかかります。 改めて機械学習のハードルの高さを感じますが、Coursera機械学習入門コースや数学勉強をしておいてよかったと改めて感じました! ※はじパタ勉強系は記事「文系社会人がはじパタで機械学習を数式含めて理解した奮闘記」にまとめました。 内容 2.1. 識別規則と学習法の分類 2.1.1. 識別規則の構成法 識別規則は、入力データ$x$からクラス$C_i \in \Omega = \{ C_1, \ldots, C_k \}$への写像である さっそく理解し難い文が出てきました。入力データ$x$に識
分類問題の評価指標の言葉の定義に関するメモです。いつも、やるたびにググって思い出しているので、記憶を定着させるために作りました。さすがにそろそろ 「覚えるぞ」という意思を込めて結構、力を入れました 混合行列(Confusion Matrix)とTP, FP, FN, TN まずは基本の基本から。二値分類の正解・不正解の種類です。 TP(True Positive)、FP(False Positive)、FN(False Negative)、TN(True Negative)の4種類です。 1文字目:T(True)は予測正解、F(False)は予測不正解。 2文字目:Pは予測が正(Positive)、Nは予測が負(Negative) TP、FP、FN、TNのマトリックスを混合行列(Confusion Matrix)と呼びます。下の混合行列で太字部分(TPとTN)は正解です。太字でないFPとF
Kerasで複数の情報を入力して、途中で結合する方法を紹介します。 この方法は、例えば以下のように画像とテキストを使って予測モデルを作る場合などに有効です。リンク先参考。 ImageDataGeneratorを使いつつ統合する方法は、記事「KerasのImageDataGeneratorを使いつつ複数Input統合モデル」を参照ください。 処理概要 以前、記事「【Keras入門(1)】単純なディープラーニングモデル定義」で紹介した以下の図の配列dataを2つに分解して統合するモデルにしてみます。 処理プログラム プログラム全体はGitHubを参照ください。 ※なぜか直接GitHubで見られずに、nbviewerなら参照できました。nbviewerにhttps://github.com/YoheiFukuhara/keras-for-beginner/blob/master/Keras09_
Pythonである程度しっかり開発することになり、ログ出力について学習しました。2時間くらいで終わらせようと甘く見ていたら、理解に1日以上かけてしまいました。そのくらいprintの次ステップは単純ではなかったです。 記事「ログ出力のための print と import logging はやめてほしい」を読み、全てはないですがエッセンスは理解できたと考えています。 他にも以下の記事は結構読みました。 Python公式 - Logging HOWTO Good logging practice in Python ロギング — The Hitchhiker's Guide to Python - Python ヒッチハイク・ガイド GitHubに今回のコードをのせています。 はじめに - printでもいい場合と卒業する場合 printは簡単にメッセージ出力できるのが良い点です。logging
Pythonを今まで適当に書いてきましたが、プログラムをしっかりと作りたいと考え、いろいろ勉強・調査しました。そこで学んだことをこの記事に書きます。 参考情報 Google Python Style Guide: 全部読み切れていませんが、いいこと書いてあります。 エキスパートPythonプログラミング改訂2版: 初中級というより中級者向け。読み飛ばしている部分も多いですが、懐に置いておいて必要時に読みたい本。一皮むけたい人にはとてもおすすめ。 コーディング規約 PythonにはPEP8というコーディング規約があります。せっかくあるので従うべきでしょう。PyCharmのようなIDEを使うと警告を出してくれるので効率よくPEP8に準拠したプログラムを書くことが出来ます。 私感で重要と考えるものだけ簡潔に抜粋しておきます。 コードのレイアウト 1レベルインデントするごとに、スペースを4つ使う
入門者に向けてKerasの初歩を解説します。 Google Colaboratoryを使っているのでローカルでの環境準備すらしていません。Google Colaboratoryについては「Google Colaboratory概要と使用手順(TensorFlowもGPUも使える)」の記事を参照ください。 以下のシリーズにしています。 【Keras入門(1)】単純なディープラーニングモデル定義 <- 本記事 【Keras入門(2)】訓練モデル保存(KerasモデルとSavedModel) 【Keras入門(3)】TensorBoardで見える化 【Keras入門(4)】Kerasの評価関数(Metrics) 【Keras入門(5)】単純なRNNモデル定義 【Keras入門(6)】単純なRNNモデル定義(最終出力のみ使用) 【Keras入門(7)】単純なSeq2Seqモデル定義 使ったPyth
以前から噂に聞いていたGoogle Colaboratoryを使ってみました。まだ深くは使ってませんが、非常に便利です。Pythonが手軽にクラウド上で実行できます。Jupyter Notebookのクラウド版だと思ってください。 今までAnaconda/Minicondaなどを使ってローカル環境を作っていましたが、それすら不要になるとは・・・敷居の低さに驚きです 記事「TensorFlowをWindowsにインストール Python初心者でも簡単だった件」や「WindowsでMinicondaを使ってTensorFlow環境構築(2018年)」で書いた内容よりも遥かにお手軽です。 Windowsでの環境比較は、記事「Windows PCで機械学習環境を作る方法まとめ」に書きました。 感想 良い点 環境構築しなくていいのが楽!condaやpipコマンドしないですぐに使えるのが最高です。 デ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? RPAソフトであるUiPathを使ってExcel読込と書込をする基本操作の解説です。だいたい1時間もあれば作れます。 以下はUiPath関連記事です。 初心者でもできるWindows10へUiPath(RPA)インストールと実行 【入門者向け】UiPath(RPA)でFlowchart作成 実行環境 Windows10 Pro 64bit UiPath Studio Community Edition 2017.1.6522 Excel統合パッケージインストール Communityバージョンでなければデフォルトでインストールされているよ
統計の学習をすると、難しい数式が出てきて躓くことも多々あると思います(経験談)。「入門」とつくタイトルの本であっても、数学当然知っているよ人間が書いていて、全然理解できないことが多いハズ。 筆者もそんな状態から2年間、試行錯誤をしながら学習し、「入門した!」ぐらいは自信を持って言えるようになりました。ただ、入門しただけなので、それより先は未知の分野です。 2年前の自分自身にアドバイスするつもりで、この記事を書きます。 関連する記事は以下のとおりです。 文系卒社会人が統計・機械学習を理解するための数学勉強方法 高校数学復習を終えると統計学の入門ができるのか? 文系卒社会人が統計入門でのモヤモヤを克服した話 時間と目的別学習方法 統計の裏には数学が密接に関連しています。しかし、数学はどうしても苦手な人もいますし、全ての統計を学習する人が数学のような時間がかかる基礎レベルから理解する必要はないと
TensorFlowおよびCNN(畳み込みニューラルネットワーク)を理解するために柏木由紀さんの顔特徴を調べてみました。記事「TensorFlow理解のために柏木由紀さん顔特徴を調べてみた【前編】」の続編です。今回は、全体処理の中のTensorFlowの学習部分にフォーカスして解説します。解説と言いながら、わかってない部分も多くてすいません 判定部分にフォーカスしている後編に続きます。 #学習処理概要 前編でも説明しましたがTensorFlowを使って学習しています。TensorFlowエキスパート向けチュートリアルDeep MNIST for Expertsとほぼ同じモデルです。その解説については、記事[「【入門者向け解説】TensorFlowチュートリアルDeep MNIST」] (http://qiita.com/FukuharaYohei/items/0aef74a04112737
意外と調べるのに時間がかかった・・・ 意外とOpenCV3.4のインストール方法を調べるのに手間取りました。結果、Wheelパッケージを公式でない場所からダウンロードしてインストールしました。過程に興味がある方は最後の方を読んで下さい。 OpenCV4.0とPython3.7でも同様の方法でインストールできることを確認したためタイトルを変えました(2018/12/25) OpenCV3.4が出たので、OpenCV3.3だった部分を刷新しました(2018/3/8) 以下はインストール後に試したことの記事です。 【入門者向け解説】openCV顔検出の仕組と実践(detectMultiScale) openCVの顔検出でパラメータを指定して手っ取り早く検出精度を高める openCVで複数画像ファイルから顔検出をして切り出し保存 ※2018/3/4時点でOpenCV3.4はAnaconda Clo
#入門者向けに「畳み込み」処理について解説 TensorFlowエキスパート向けチュートリアルDeep MNIST for Expertsを実行して、まずわかりにくいのが「畳み込み」処理でした。文系卒からすると一般用語でもないですし、少し時間がかかりましたが、分かれば簡単です。基本的には四則演算ができれば理解できます。 【入門者向け解説】TensorFlowチュートリアルDeep MNIST記事で、畳み込みニューラルネットワークの処理を解説していますので参考にしてください。 また、「【入門者向け解説】プーリング処理入門(TensorFlowで説明)」の記事でプーリングについても解説しています。 ※TensorBoardで出力した画像を参考に載せました(2017/7/27) #概説 ###概要 「【入門者向け解説】TensorFlowチュートリアルDeep MNIST」の記事で解説しましたが
R言語とは 統計解析向けのオープンソース言語です。とにかく、統計に関わるとあらゆる場所で「R」について聞きます。SPSSやSASはもちろん、Azure Machine Learningなどクラウド系の統計ソリューションでも大体、使える/連携できるようになっています。 今回はR言語環境準備としてRのインストール方法を紹介します。RStudioインストール(2020年 Windows)に続きます。 ※2020年5月に最新版でインストールし直して手順の再確認しました。一部スクリーンショットは旧バージョンインストール時のものですが、バージョンID以外変わらなかったのでそのままにしています。 参考 Wikipedia: R言語 R公式サイト 【R入門】R言語の基本的な使い方 環境:Windows7 32bit(LinuxでもMacでも使えます) Windows10 64bitでも同じ操作でインストー
短評 想像の3倍くらい時間をかけてしまいましたが、色々なことが目からウロコで大いに面白かったです。TensorFlowエンジニアの見習い小僧レベルにはなれた気がします。とはいえ、奥が深くて本当に表面的な部分を学習しただけとも感じています。内部的な処理はわからないことだらけですし、応用どころか基本もままならない状態。あとどのくらい時間をかければ、プロと胸を張って言えるレベルになれるかは、正直見当がつかないです・・・一方でそんな状態でもオリジナルのテーマでDeep Learningが実装できるのは、本当にTensorFlowの凄さだと思います。あと、地味にAnacondaも便利で助けられました。 学習目的 現在および直近の仕事でDeep LearningやAIはおろか、機械学習すら使わないですが、「今後を踏まえて何かしなきゃ」という強い想いのもと学習しました。また、純粋に「面白そう」という気持
openCVを使ってフォルダにある複数の画像ファイルから顔検出をして、顔部分を切り出して画像保存するプログラムを作ったので、その紹介です。 以下はopenCVに関する他参考記事です。 OpenCV3.3とPython3.6をAnacondaでWindows10へインストール 【入門者向け解説】openCV顔検出の仕組と実践(detectMultiScale) openCVの顔検出でパラメータを指定して手っ取り早く検出精度を高める openCVで効率的に大量画像を顔検出するためのtips 環境サマリは下記のとおりです。 #Pythonコード 記事「openCVの顔検出でパラメータを使って素早く検出精度を高める」で解説したコードを流用して、画像ファイル名、画像数、使用学習済モデル、detelcMultiScaleのパラメータを実行時指定できるようにしています。 どの元ファイルと出力ファイルを出
概要と環境 openCVの顔検出方法について調べて試してみました。入門者向けに解説します。 以下はopenCV関連記事です。 OpenCV3.3とPython3.6をAnacondaでWindows10へインストール openCVの顔検出でパラメータを指定して手っ取り早く検出精度を高める openCVで複数画像ファイルから顔検出をして切り出し保存 openCVで効率的に大量画像を顔検出するためのtips 検証環境は下記のとおりです。 openCVの顔検出でできたこと 人物画像に対して顔検知して四角枠で囲みました。 複数人でも大丈夫。すごい! 変顔だって検知します!(後ろの人も検知できてます) 顔検知から鼻検知に切り替えることもできます。 oepnCVの顔検出の仕組み 論文や具体的なアルゴリズムを見て調べて確認していないので、以降の解説は誤りがあるかもしれません(指摘いただけたら嬉しいです)
TensorBoardでTensorFlowの理解を早める 文系卒でDeep LearningどころかPythonも初めてだと、TensorFlowを理解するのが遅くてなかなか苦しいです。少しでも理解を早めるためにもTensorBoardを学習しました。複雑なディープラーニングの理解促進はもちろん、デバッグや処理最適化・再設計などいろんなことに使えます。いろいろな見える化ができるのですが、当記事は入門者に向けたGraph出力方法に絞って解説します(もっと広く深くできればいいのですが、そこまで筆者の理解が追いついていません)。 公式ガイド「TensorBoard: Visualizing Learning」がわかりにくかったので、かなり簡素化しています。 TensorBoardで処理を可視化するのサイトが素晴らしく、かなり参考にさせて頂きました。 環境:python3.5 tensorflo
次のページ
このページを最初にブックマークしてみませんか?
『@FukuharaYoheiのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く