生成AI(LLM)のハルシネーションの原因と対策を解説
生成AIは、時々間違った情報を作り出してしまうことがあります。これを「ハルシネーション」と呼びます。この記事では、ハルシネーションがどうして起こるのか、そしてそれを防ぐ方法を説明します。
ハルシネーションが起こる理由
ハルシネーションは、大きく3つの原因で起こります。
1. LLMの学習データが原因
LLMの学習データが、ハルシネーションの大きな原因になります。
誤情報の含有: LLMが学習するデータに古い情報や誤った情報が含まれている場合、モデルはその情報を学習し、誤った答えを生成することがあります。LLMはデータ内のパターンを学習するため、誤情報であってもそれを再現してしまう可能性があります。
誤情報の含有: LLMが学習するデータに古い情報や誤った情報が含まれている場合、モデルはその情報を学習し、誤った答えを生成することがあります。LLMはデータ内のパターンを学習するため、誤情報であってもそれを再現してしまう可能性があります。
知識の限界: LLMが学習するデータに特定分野の知識が十分に含まれていない場合、正確な答えを出せないことがあります。この場合、モデルは他の類似した情報に基づいて推測するため、誤った情報を生成するリスクが高まります。
続きを読む
【論文】RAGシステムの失敗ポイントと教訓を解説
RAG (Retrieval Augmented Generation) システムの設計における失敗ポイントと、ケーススタディから得られた教訓を報告されている論文を紹介します。
タイトル:Seven Failure Points When Engineering a Retrieval Augmented Generation System
タイトル:Seven Failure Points When Engineering a Retrieval Augmented Generation System
RAGシステムが失敗する理由
一般的にRAGシステムの精度が低い原因は、検索に起因する部分が大きいと言われています。RAGは、ユーザーのクエリから検索するわけですが、クエリが曖昧だと解釈が難しいですし、一方複雑なクエリも、それはそれで正確に回答するのは難しいです。
また、参照するドキュメントも様々な落とし穴があります。ドキュメントが章ごとに分かれており、内容が正しく、明確な文章で記載されていれば問題ありません。しかし、情報が古かったり、ドキュメントの形式がばらばらだったり、ページ構成が複雑だと、検索で引っ掛けるのが難しくなります。
続きを読む
また、参照するドキュメントも様々な落とし穴があります。ドキュメントが章ごとに分かれており、内容が正しく、明確な文章で記載されていれば問題ありません。しかし、情報が古かったり、ドキュメントの形式がばらばらだったり、ページ構成が複雑だと、検索で引っ掛けるのが難しくなります。
WindowsでSQLiteの使い方(インストールから基本操作まで)
SQLiteの環境構築から使い方までを解説します。
RDBMSとは
RDBMSは、リレーショナルデータベース管理システム (Relational Database Management System) の略称です。リレーショナルデータベースを管理するためのソフトウェアのことを指します。代表的なRDBMSには、Oracle Database、MySQL、PostgreSQL、SQLiteなどがあります。RDBMSの特徴は以下になります。
1. データを表形式で管理し、テーブル間の関連性(リレーション)を定義できる。
2. SQL言語を使用してデータの操作や検索が行える。
3. データの整合性を保つために、トランザクション管理機能やACID特性(原子性、一貫性、独立性、耐久性)を備えている。
4. データの同時アクセスを制御し、不整合を防ぐためのロック機構を持つ。
5. バックアップやリカバリ機能により、データの安全性と可用性を確保できる。
続きを読む
Azureネットワークサービスの用語集:仮想ネットワークと関連サービスを理解する
これからAzureの環境構築する人に向けて、Azure独自のネットワーク関連の用語をまとめました。
続きを読む
分類 | サービス名 | 説明 |
仮想ネットワークの基本コンポーネント | 仮想ネットワーク(Vnet) | Azure 上で論理的に分離されたネットワーク環境。主に、仮想マシン同士の通信で利用。Azure Portalで、「アドレス空間」と「サブネット」を定義する。また、内部的に DHCP サーバーやサブネット間の自動的なルーティング機能を保持。 |
サブネット | 仮想ネットワークを小さなセグメントに分割し、ネットワークの構成を管理しやすくします。 | |
ネットワークインターフェース(NIC) | プライベートIPアドレスとパブリックIPアドレスの両方を仮想マシンに割り当てる。 | |
仮想マシン | どの仮想ネットワーク、どのサブネットに配置するかを設定する。 | |
IP アドレス | パブリックIPアドレス | インターネットから直接アクセスできる IP アドレス。 |
プライベートIPアドレス | 仮想ネットワーク内でのみ使用される IP アドレス。 | |
ネットワークセキュリティ | ネットワークセキュリティグループ(NSG) | Azureの仮想ネットワーク上のファイアウォール。仮想マシンのネットワークインターフェースや仮想ネットワークのサブネットに適用し、IPアドレス・Service Tagの送受信の制御、トラフィックの許可や拒否といったルールを設定する。 |
外部接続 | Private Link | グローバル IP アドレスを使わずに、プライベートエンドポイントに割り当てられたプライベート IP アドレスを経由して、仮想ネットワークから Azure PaaSにアクセスする。 |
プライベートエンドポイント | 仮想ネットワーク内のAzure PaaSのプライベート IP アドレスに接続するネットワークインターフェース。 | |
サービスエンドポイント | プライベート IP アドレスのままで Azure PaaSのパブリック IP アドレスに接続するネットワークインターフェース。 | |
DNS | プライベートDNSゾーン | 仮想ネットワーク内の名前解決サービス。 |
Fast APIの使い方を解説(入門編)
Fast APIの基本的な使い方を解説します。
FastAPIは、リクエストとレスポンスのスキーマを定義することになります。これによって、フロントエンドエンジニアが実装の際に利用するドキュメントを簡単に自動生成でき、さらに実際にリクエストパラメータを変更してAPIの呼び出しを試すこともできます。
なお、FastAPIのディレクトリ構造は、api ディレクトリの下に schemas, routers, models, cruds の4つのディレクトリを切るのが一般的のようです。本記事では、パスオペレーション関数(記事後半で説明)を定義するrouters配下のコードのみ実装します。
続きを読む
Fast APIとは
Fast APIは、Python向けのWebアプリケーションフレームワークです。高速で、非同期処理が可能で、コードからSwagger UIが自動生成できます。
FastAPIは、リクエストとレスポンスのスキーマを定義することになります。これによって、フロントエンドエンジニアが実装の際に利用するドキュメントを簡単に自動生成でき、さらに実際にリクエストパラメータを変更してAPIの呼び出しを試すこともできます。
なお、FastAPIのディレクトリ構造は、api ディレクトリの下に schemas, routers, models, cruds の4つのディレクトリを切るのが一般的のようです。本記事では、パスオペレーション関数(記事後半で説明)を定義するrouters配下のコードのみ実装します。
続きを読む
Azure OpenAIのマジカルツアー!PythonでGPT-4との対話の世界へ
Azure OpenAI Service上のGPT-4を、Pythonから利用する方法を解説します。
Azure OpenAI Serviceを利用するためには、Azureサブスクリプションの登録に加え、「Azure OpenAI Serviceのアクセス申請」が必要になります。
(追記:2023年9月に、GPT-4のWaiting Listの申請が不要になりました)続きを読む
Azure OpenAI Serviceは、OpenAIのChatGPTやGPT-4などのモデルを、Microsoft Azure環境で利用できるサービスです。
開発者は、GPTモデルをREST APIとして利用できます。タスクとしては、テキスト生成、質問応答、文章要約、感情分析などが実現できます。また、Azureの拡張性とセキュリティ機能を利用することで、企業向けの開発が可能です。
Azure OpenAI Serviceを利用するためには、Azureサブスクリプションの登録に加え、「Azure OpenAI Serviceのアクセス申請」が必要になります。
(追記:2023年9月に、GPT-4のWaiting Listの申請が不要になりました)続きを読む
LLMやGPT-4で機械学習エンジニアの仕事はどう変わるのか
「GPT-4」という高性能な言語モデルが登場しました。
質問を投げると、人間のように問題解決してくれます。
「LLM(Large Language Models)」と言われる大規模言語モデルは、大量のテキストデータを使ってトレーニングされています。回答では大量に覚えたテキストデータから引っ張って来るわけですが、上手く汎化されており、新たなステージに入ったことを感じます。なぜあんなに自然な文章を書けるのが不思議です。今更ながらですが、LLMの記事を書いてみました。
続きを読む
AIエンジニアが教えるゼロから機械学習の勉強法
「初心者だけど機械学習を学びたい」「ゼロからAIを作れるようになりたい」という方向けに、最短で機械学習を習得する方法を書いてみました。
機械学習の実装に必要な知識
機械学習のプログラミングは簡単
機械学習のおすすめ勉強法
STEP1 機械学習の基礎知識
STEP2 開発手法の知識
STEP3 プログラミングの知識
STEP4 機械学習アルゴリズムの知識
機械学習に数学の知識は必要か
自分に合った勉強方法を選ぼう
1ヶ月間集中して機械学習を学ぶと周囲に宣言しよう
※忙しい方は、「STEP1 機械学習の基礎知識」からお読みください。

元記事:Python leads the 11 top Data Science, Machine Learning platforms: Trends and Analysis
目次
やっぱり機械学習ツールはPythonとscikit-learn機械学習の実装に必要な知識
機械学習のプログラミングは簡単
機械学習のおすすめ勉強法
STEP1 機械学習の基礎知識
STEP2 開発手法の知識
STEP3 プログラミングの知識
STEP4 機械学習アルゴリズムの知識
機械学習に数学の知識は必要か
自分に合った勉強方法を選ぼう
1ヶ月間集中して機械学習を学ぶと周囲に宣言しよう
※忙しい方は、「STEP1 機械学習の基礎知識」からお読みください。
やっぱり機械学習ツールはPythonとscikit-learn
データサイエンス界のロイター通信的存在であるKDnuggetsから、2019年に最も利用されたデータサイエンス・機械学習ソフトウェアのランキングが発表されました。
元記事:Python leads the 11 top Data Science, Machine Learning platforms: Trends and Analysis
トップはPythonです。不動の一位を確保しています。またAnaconda、Tensorflow、scikit-learnなどPythonのライブラリ群もシェアを伸ばしています。一方Rは、前年比4%シェアを落としました。
Pythonは名実ともに機械学習のデファクトスタンダードになりました。我らがscikit-learnも9位と大健闘しています。Pythonとscikit-learnがあれば、機械学習は何とかなるのです。
日本語Universal Sentence Encoder(USE)とBag-of-Wordsの分類精度比較
Universal Sentence Encoderは、文をベクトル化する手法です。
Googleの研究者達が開発したもので、2018年にTensorflow Hubで公開されました。
多言語に対応しているところが特徴で、日本語と英語で同じ意味なら、ほぼ同じベクトルに変換してくれます。
また、文中の単語の意味や語順を考慮した文章ベクトルを、ニューラルネットワークによるend-to-endな学習で獲得できるので、意味を解釈したベクトルに変換可能です。
関連記事:Python(gensim)と日本語Word2Vecで単語ベクトル可視化
また、文中の単語の意味や語順を考慮した文章ベクトルを、ニューラルネットワークによるend-to-endな学習で獲得できるので、意味を解釈したベクトルに変換可能です。
関連記事:Python(gensim)と日本語Word2Vecで単語ベクトル可視化
続きを読む