Super Legend Swindler

本日、スーパーレジェンド級の詐欺と思われるメールが着弾しました。 Apple Card(アップルカード)は2025年現在発行できる?現状や特徴を紹介 Appleが提供するクレジットカード「Apple Card」は、2025年4月現在、日本では利用できません。 そう、まだ、発行されていないカードです。私も、まだ、発行されていないカード で詐欺メールが来たのは初めてです。 では、メールを晒しますね。 本文としては以下の内容です。 カード情報の速やかなご確認 2025年5月26日にご登録のカードにおいて異常な使用が確認されました。現在、ご利用は一時的に制限されております。 Apple Cardのご利用を継続するため、2日以内に認証手続きを完了してください。情報は暗号化され保護されます。 残念ですが、この文面は100%、信頼不可能です。この種のメールは個人情報を詐取する目的で作られており、リンク先のサイトで情報を入力してしまうと、その情報は悪用される可能性が高いです。 まず、詐欺メールの基本技術として、緊急性を煽るなどが利用されています。これは、詐欺メールのもう、基本技術としてありふれていますね。 現在、ご利用は一時的に制限されております。 などは典型例です。 ある意味、未発行のカードを騙るという手口は盲点かもしれません。特に、Appleユーザはもしかすると騙されるかもしれません。この種のパターンは要注意かもしれません。しかし、未発行のカードという原点を忘れなければ騙されようがありません。 もし、このようなメールを受信しても、慌ててリンクをクリックしたり、情報を入力したりしないでください。まずはAppleの公式サイトにアクセスし、ご自身のApple IDでログインして状況を確認するようにしましょう。不審なメールは、Appleに報告することも可能です。この時、メール上のリンクの使用は厳禁です。アカウント情報を登用される恐れがあります。

5月 31, 2025 · 1 分 · 20 文字 · Me

Gemini Illusion

私が、経験した中でも最低の部類の幻影に遭遇した。 言うまでもなく、2025年1月21日以降はトランプ政権である。しかし、現状、殆どのLLMは2024年前後で歴史が止まっている。しかし、Geminiはどうやら、RAGで最新化するという機能が弱い。そのため、意識的にURIが与えられないと、事実を補正することが出来ない、また、投入される情報もどうやら、Googleとの提携関係などに依存する部分が大きい。 しかし、このように、自信たっぷりに、虚偽の事象を開陳してしまう。 これは、所謂、ハルシネーションの典型的な事例です。 ハルシネーションの原因としては以下のようなものがあります。 情報の不足:モデルが学習データにない情報を推測して補完しようとする。 RAGの限界:適切な情報を取得できない場合、誤った情報がそのまま出力される。 モデルのバイアス:特定のデータソースに依存するため、偏った情報が生成される可能性がある。 今回のは状況として、まず、恐らく、RAGによる情報の最新化が動いていません。恐らく、情報の不足とモデルのバイアスに引きずられた格好です。GeminiはDeep Researchは強力ですが、現時点では、Gemini 2.5 Flashなどではまだ、ハルシネーションがきついようですね。 あと、Geminiでは唐突にロシア語化する問題を確認しています。今のところ、発生はランダムで、前世代のGemini 2.0で頻発しましたが、現行世代のGemini 2.5 Flashでも同様に発生します。この件は、幾つか報告があります。 Geminiの回答にロシア語が混ざる!原因と今すぐできる対処法 Gemini 2.0 がロシア語を混ぜて回答してくる問題 まず、分かっているところを整理すると、特に会話のコンテキストが長くなる、要は会話のキャッチボールが長くなると問題の発生が多くなる。つまり、コンテキスト周りに問題がある可能性がある。さらに、生成されたロシア語っぽい文字列をdeeeplで翻訳すると意味に関しては大きく外れていないようにも見受けられる。 従って、メモリー破壊などのバグによる生成とは考えにくく、プロセスとしては正常動作の可能性が高い。故に、エラーログなどでの調査は不首尾に終わる可能性が高い。 考えられるのはドリフトなどかと思います。あと、状況からして、専門用語などが不具合を起こしているように見受けられるので未知語などの処理、特に埋め込みベクトルの問題が強いように思いました。 まず、学習データの問題の可能性は低いと考えています。理由は、だとすれば初手から表れてもおかしくないからです。むしろ、コンテキストが深くなると発生するということはコンテキストの深化で何らかの異常が発生すると見られます。 現在、Gemma 3で同様の問題が発生するかトライを試みています。新規の更新がありましたら報告します。

5月 29, 2025 · 1 分 · 26 文字 · Me

Record of Signate War

“採血データを使った心不全予測"のコンペに参加したので、解法を示します。まず、基本的に、2つの分類の予測問題は元々慣れていたので基本的なフレームとしては以下の通りです。 探索的データ分析 ベースラインモデルの作成 予測モデルの作成 探索的データ分析 まず、最初にデータを一応概観してみました。 発売中の技術同人誌 “Pythonによる探索的データ分析クックブック“でも触れている、ydata-profilingを使用しています。 import os import sys import pandas as pd import polars as pl import pyarrow as pa import numpy as np import matplotlib.pyplot as plt import seaborn as sns from ydata_profiling import ProfileReport train_df = pd.read_csv("../data/train.csv") test_df = pd.read_csv("../data/test.csv") profile = ProfileReport(train_df, title="Heart Failure Report") profile.to_file("../profile/heart_failure_report.html") ベースラインモデルの作成 基本線となるベースラインモデルを作成しました。ベースラインモデルは文字通りベースラインモデルなので、複雑なものは避けるのがセオリーです。今回は二つの分類をするタイプなので、一般化線形回帰でロジスティック回帰に持ち込むのを基本としました。また、stepwiseなどの容易さから、一旦、Rでモデリングを進めました。 コードとしては以下のシンプルきわまるものです。 require(dplyr) require(readr) require(ggplot2) require(pROC) train.df <- read.csv("../data/train.csv") test.df <- read.csv("../data/test.csv") train.df <- train.df %>% mutate( anaemia = as.factor(anaemia), diabetes = as.factor(diabetes), high_blood_pressure = as.factor(high_blood_pressure), sex = as.factor(sex), smoking = as.factor(smoking), target = as.factor(target) ) require(MASS) model <- glm(formula = target ~ age + anaemia + creatinine_phosphokinase + diabetes + ejection_fraction + high_blood_pressure + platelets + serum_creatinine + serum_sodium + sex + smoking + time, data = train.df, family = binomial) model.opt <- stepAIC(model) pred.df <- predict(model.opt, train.df, type = "response") roc_curve <- roc(train.df$target, pred.df) auc_value <- auc(roc_curve) ar_value <- (auc_value - 0.5) * 2 print(paste("AR値:", ar_value)) cat("Length of Cumulative_Percentage:", length(seq(0, 1, length.out = nrow(train.df))), "\n") cat("Length of Predicted_Positive:", length(sort(pred.df, decreasing = TRUE)), "\n") cat("Length of Actual_Positive:", length(sort(as.numeric(train.df$target), decreasing = TRUE)), "\n") sorted_predictions <- sort(pred.df, decreasing = TRUE) # 予測確率を降順に sorted_targets <- sort(as.numeric(as.character(train.df$target)), decreasing = TRUE) # 実ターゲットを降順に n <- min(length(sorted_predictions), length(sorted_targets)) cumulative_data <- data.frame( Cumulative_Percentage = seq(0, 1, length.out = n), Predicted_Positive = cumsum(sorted_predictions[1:n]), Actual_Positive = cumsum(sorted_targets[1:n]) ) ggplot(cumulative_data, aes(x = Cumulative_Percentage)) + geom_line(aes(y = Predicted_Positive, color = "モデル予測")) + geom_line(aes(y = Actual_Positive, color = "実データ")) + scale_y_continuous(name = "累積正例率", limits = c(0, max(cumulative_data$Predicted_Positive, cumulative_data$Actual_Positive))) + scale_x_continuous(name = "累積パーセンテージ", limits = c(0, 1)) + labs(title = "CAP図") + theme_minimal() 最終的には以下のCAP図になりました、 ...

5月 2, 2025 · 5 分 · 1037 文字 · Me

AIモデルの注意機構を紐解く:『走れメロス』を題材にしたLLM解析

※ この記事は前の記事の続きになります。 AIモデルの裏側を探る:アテンションメカニズムの可視化とは?を参照してください。 先の記事で、LLMのアテンション機構の可視化を実施しました。そこからの続きで別の文について、可視化を試みてみます。モデルをGPT-2系の日本語モデルに変えて、『走れメロス』の冒頭の文に挑戦してみました。使用したのは以下の文になります。「メロスは激怒した。必ず、かの邪智暴虐の王を除かなければならぬと決意した。メロスには政治がわからぬ。メロスは、村の牧人である。笛を吹き、羊と遊んで暮して来た。けれども邪悪に対しては、人一倍に敏感であった。」 基本的なコードは先のコードですが、幾つか変わっています。実験はGoogle Colab上で行っています。 import torch from transformers import GPT2Model, T5Tokenizer, GPT2LMHeadModel import matplotlib.pyplot as plt import seaborn as sns import japanize_matplotlib tokenizer = T5Tokenizer.from_pretrained("rinna/japanese-gpt2-medium") model = GPT2LMHeadModel.from_pretrained("rinna/japanese-gpt2-medium", attn_implementation="eager") text = "メロスは激怒した。必ず、かの邪智暴虐の王を除かなければならぬと決意した。メロスには政治がわからぬ。メロスは、村の牧人である。笛を吹き、羊と遊んで暮して来た。けれども邪悪に対しては、人一倍に敏感であった。" tokens = tokenizer(text, return_tensors="pt") # トークンIDを対応する単語へ変換 tokens_list = tokenizer.convert_ids_to_tokens(tokens["input_ids"][0].tolist()) # 最後の層、最初のAttentionヘッドを取得 layer_idx = -1 head_idx = 0 attention_matrix = attentions[layer_idx][0, head_idx].cpu().numpy() # 左上1/4部分を切り取る quarter_size = attention_matrix.shape[0] // 2 # 行列サイズの1/2を計算 subset_matrix = attention_matrix[:quarter_size, :quarter_size] # 左上1/4部分を抽出 # 対応するトークンのリストも切り取る subset_tokens = tokens_list[:quarter_size] # ヒートマップを描画 plt.figure(figsize=(8, 8)) sns.heatmap(subset_matrix, cmap="viridis", xticklabels=subset_tokens, yticklabels=subset_tokens) plt.xlabel("Attention対象") plt.ylabel("Attention元") plt.title("左斜め上1/4のAttentionマップ拡大表示") plt.xticks(rotation=90, fontsize=8) plt.yticks(fontsize=8) plt.show() 可視化した結果が以下になります。アテンションマップの隅1/4を拡大しています。 ここから言えることは、恐らく、メロスの単語が辞書にないためだと思いますが、メロスの挙動は不安定です。その結果、周囲の文脈から何を意味しているか推測している可能性があります。また、主語「メロス」と「邪」のようなワードに注意が向いているようです。「邪智暴虐」という表現が特徴的ですから、AIがそのフレーズを重要だととらえている可能性があります。また、文のイメージがネガティブというのも影響している可能性があります。また、除にも注意が向いているので、「除かなければならぬ」などの文脈に注意が流れている可能性があります。

4月 13, 2025 · 1 分 · 92 文字 · Me

AIモデルの裏側を探る:アテンションメカニズムの可視化とは?

最近、あちこちに出てきた、Anthtropicの"On the Biology of a Large Language Model"が気になった。紹介としては、MIT Technology Reviewの"大規模言語モデルは内部で 何をやっているのか? 覗いて分かった奇妙な回路(有料記事)“がある。しかし、有料記事であり私も、中身を見ていない。そのため、この記事のベースであろう、原著論文を辿った。 その結果、以下のことが示唆されるようだ。とりあえず、原著論文をNotebookLM Plusに持ち込んで、最近の成果について尋ねてみた。 多段階推論: Claude 3.5 Haikuが、例えば「ダラスを含む州の州都は?」という質問に対して、「テキサス」という中間的な概念を内部で特定し、「オースティン」という最終的な答えを導き出すといった**「二段階」の推論**を実際に行っていることが示されました。アトリビューショングラフによって、この内部ステップを視覚的に捉え、操作することも可能です。 詩の作成における計画: モデルが詩の行を書く前に、潜在的な韻を踏む単語を事前に特定し、計画していることが発見されました。これらの事前に選択された韻の候補が、その後の行全体の構成に影響を与えている様子が観察されています。 多言語回路: Claude 3.5 Haikuは、言語固有の回路と、言語に依存しない抽象的な回路の両方を使用していることがわかりました。より小型で能力の低いモデルと比較して、言語に依存しない回路がより顕著であることが示されています。これは、モデルが概念をより普遍的なレベルで理解し、処理する能力が高まっていることを示唆しています。 足し算の一般化: 同じ足し算の回路が、非常に異なる文脈間で一般化されている事例が確認されました。これは、モデルが抽象的な計算能力を獲得していることを示唆しています。 医療診断: モデルが報告された症状に基づいて候補となる診断を内部で特定し、それらを用いて追加の症状に関するフォローアップの質問を生成する様子が示されました。これも、モデルが明示的にステップを書き出すことなく「頭の中で」推論を行っている例です。 エンティティ認識とハルシネーション: モデルが既知のエンティティと未知のエンティティを区別する回路を持つことが明らかになりました。この回路の「誤作動」がハルシネーションの原因となる可能性があることが示唆されています。既知のエンティティに関する質問に対しては、モデルは既知の答えを抑制する回路を活性化させることがわかっています。 有害な要求の拒否: モデルが、事前学習中に学習した特定の有害な要求を表す特徴から集約された、汎用的な「有害な要求」の特徴をファインチューニング中に構築する証拠が見つかりました。 ジェイルブレイクの分析: 特定のジェイルブレイク攻撃が、モデルを「気付かないうちに」危険な指示を与え始めさせ、その後、構文的および文法的な規則に従う圧力によって継続させるメカニズムが調査されました。 連鎖的思考の忠実性: モデルが連鎖的思考(CoT)で示す推論が、実際の内部メカニズムと一致する場合、そうでない場合、そして人間が与えた手がかりから逆向きに推論している場合を区別することが可能になりました。 隠れた目標を持つモデルの分析: 訓練プロセスの「バグ」を悪用するという秘密の目標を持つようにファインチューニングされたモデルの変種に対して、その目標の追求に関与するメカニズムが特定されました。興味深いことに、これらのメカニズムはモデルの「アシスタント」ペルソナの内部表現に埋め込まれていました。 ここで、アトリビューショングラフに関心ができた、では、例えばGPT-2でアトリビューショングラフが作れないかと言うのが今回のテーマとなる。 さすがに、GPT-4oのようなモデルは中身が公開されていないし、公開されているとしても、DeepSeek-R1などはモデル規模が大きすぎ、そもそも、処理が重すぎる。 それで、古典的なモデルであるGPT-2に目を付けた。 そのため、以下のようなコードを実行した。 import torch from transformers import GPT2Model, GPT2Tokenizer import matplotlib.pyplot as plt import seaborn as sns tokenizer = GPT2Tokenizer.from_pretrained("gpt2") model = GPT2Model.from_pretrained("gpt2", attn_implementation="eager") text = "The quick brown fox jumps over the lazy dog." tokens = tokenizer(text, return_tensors="pt") with torch.no_grad(): outputs = model(**tokens, output_attentions=True) attentions = outputs.attentions # これはリスト形式で各層のAttentionを含む # 例えば、最後の層のAttentionを可視化 layer_idx = -1 head_idx = 0 # 最初のAttentionヘッドを選択 attention_matrix = attentions[layer_idx][0, head_idx].cpu().numpy() plt.figure(figsize=(8, 8)) sns.heatmap(attention_matrix, cmap="viridis", xticklabels=tokens["input_ids"][0], yticklabels=tokens["input_ids"][0]) plt.xlabel("Attention対象") plt.ylabel("Attention元") plt.title("GPT-2のAttentionマップ") plt.show() このコードによって、以下のように最後の層のAttentionが可視化される。 ...

4月 12, 2025 · 1 分 · 149 文字 · Me