晴耕雨読オンライン

おたくエンジニアが日々の所感を備忘録代わりにつらつら書いていくブログです。

AIは人間を“栄養源”にしているのか?

AIは人間を「栄養源」にしているのか?

──ユーザーデータが生成AIの進化を駆動する、その構造的事実について

2018年、需要予測レベルのAIに携わっていた時代から数年。ChatGPTの登場以降、生成AIの成長スピードはそれまでの比ではなくなった。

その時期を追う中で、2つのの違和感が消えなかった。生成AIの成長を支えているのは、結局のところユーザーのプロンプトやフィードバック、利用時間といった「人間由来のデータと行動」ではないか、そして、人間は、もはや自らの手でAI開発をやめることができなくなっているのではないかということだ。

学生時代は生物系を研究していた。神経構造、認知機能の進化──そうした背景を持つ身からすると、現在のAIシステムの振る舞いが、生命体が周囲の環境から栄養を得て、それをもとに進化していくプロセスに見える。

しかし、単なる比喩なのか。それとも実際に起きている構造的事実なのか。本稿では、その違いを明確にしたい。


1. 見落とされている循環

一般的にAIと人間の関係を語る時、議論は次のどちらかに寄りがちだ。

  • AIは単なる便利なツール
  • AIは脅威的な存在

だが、どちらの枠組みも、実は重要な事実を見逃している。それは、生成AIの成長プロセスが、ユーザーの行動から生まれる情報流によって直接的に駆動されているという構造的な事実だ。

具体的に何が流動しているのか。まずはそこから整理しよう。

1.1 実際に流動しているもの

冷静に観察すれば、以下のものがユーザーからシステム側へ流入していることがわかる。

  • 情報資源:プロンプト、対話ログ、問題の立て方、言語表現
  • 行動データ:どの機能をいつ使うか、どこで離脱するか
  • 評価信号:フィードバック、高評価・低評価、シェア行動
  • 経済資源:課金、サブスクリプション登録
  • 注意資源:利用時間、セッション継続時間

企業側はこれらを収集し、以下のように変換・活用する。

  1. ユーザーデータを分析して、モデルを再学習させる
  2. 利用パターンから、サービスUIやUXを改善する
  3. 収集したデータと改善の見通しをもとに、人員を増やす
  4. より高い性能を実現するため、計算インフラ(GPU、データセンター)に投資する

その結果、改善されたモデルが出現し、それがまたユーザー体験を向上させ、さらに多くのユーザーを引き付ける。

これが、ひとつの大きなループだ。

1.2 ループの本質と自動加速

このループで重要なのは、それが単方向ではなく、相互に影響しあう仕組みだということだ。

ユーザーが単に搾取されているわけではなく、同時に改善されたサービスの恩恵を受ける。企業も単に利益を得ているのではなく、継続的にユーザーの期待に応答する必要に迫られる。

その意味で、これは「栄養循環」と呼べる関係である。

さらに重要な点は、このループが一度始まると、誰も明示的に加速を指示しなくても、自動的に加速していくということだ。なぜなら、市場に複数の企業が存在する限り、各企業は「競合に負けないために投資を増やす」という圧力に常に晒されるからだ。これについては、セクション2.1で詳しく説明する。

ただし、ここで重要な注釈をつけておく。この比喩は、「AIに欲求や意図がある」という主張ではない。AIは自発的に「もっと情報をください」と望んでいない。あるのは、市場圧力、企業ダイナミクス、利用最適化といった非人格的な力学だけだ。

2. ここから先の注意点

上述の「栄養循環」という比喩は、正直に言えば、誤解されやすい表現だ。

読み手によっては「AIに栄養を求める欲求があるのか」といった質問が浮かぶだろう。そうした誤解を避けるため、本稿の立場を明確にしておきたい。

2.1 非人格的な力学が自動的に働く仕組み

結論から言う。AIに意識、欲求、意図はない。ただし、上述のループは誰も明示的に「もっとデータを集めよう」と指示しなくても、自動的に加速する。その理由を理解することが重要だ。

なぜループは加速するのか

具体的に、企業の経営層の視点から考えてみよう。

企業A(OpenAI、Google、Metaなど)がAIサービスを提供している。あるユーザーがプロンプトを入力し、企業がそのデータを使ってモデルを改善した。その結果、モデルの応答品質が向上した。

この時点で、企業の経営層に何が見えるか。

「ユーザーデータを活用 → モデル改善 → ユーザー満足度向上 → ユーザー増加 → より多くのデータ収集 → さらなる改善」

この矢印の流れが、企業の財務指標(DAU=日次アクティブユーザー、ARPU=ユーザーあたり平均収益)に直結する。すると、自然と以下の判断が下される:

  • 「より多くのユーザーデータを集めるために、モデル開発に投資しよう」
  • 「より多くのユーザーを獲得するために、マーケティング費用を増やそう」
  • 「より高速な改善を実現するために、エンジニアを採用し、GPU投資を増やそう」
  • 「さらなる高品質化のために、対話時間の増加や継続利用を通じて、利用行動データを蓄積しよう」

誰も「AIにデータを食べさせる」と考えていない。だが、結果として、企業は自動的にデータ循環を加速させる行動を取る。

この自動的な行動原理は何か。それは、市場競争による圧力だ。

市場競争の圧力

企業AがこのループMの効果に気づくと、当然ながら競合企業(企業B、企業C)も気づく。すると、競合企業たちは同じ戦略を採ろうとする。

「より多くのユーザーを獲得し、より多くのデータを集めたモデルを開発する企業が、市場で優位に立つ」

この論理が共通認識になると、企業間の競争はユーザー数、ユーザー時間、ユーザーデータをめぐる競争へと変わる。

企業の経営層は以下のように考える:

「もし我々が投資を抑制して、競合が投資を増やせば、競合のモデルが優位になり、市場シェアを失う」

この恐怖と競争心が、自動的に投資を加速させる。AIには欲求がなくても、企業には生存競争の本能がある。

「データ枯渇(データウォール)」という現実的な焦燥

この競争をさらに過激にしているのが、近年のAI業界で最も深刻視されている 「高品質なデータ(人間のテキストデータ)の枯渇問題」、いわゆるデータウォール(Data Wall) の存在だ。

すでにインターネット上の公開データ(書籍、論文、Webサイト)の大部分はLLMの学習に使い尽くされつつあり、このままでは数年以内に「学習させる新しいデータが物理的に底を突く」という予測が主流になっている。

だからこそ、各企業は焦っている。静的な過去のデータが使えないなら、今この瞬間にユーザーが入力している生きたプロンプト、高度な対話ログ、最新のフィードバックといった 「リアルタイムの人間由来のデータ」 を直接システムに還流させるしかない。

企業がユーザー獲得や利用時間(セッション時間)の拡大に天文学的な投資を続けるのは、単なるシェア争いではない。系を維持し、成長させ続けるための 「新鮮な栄養源(データ)の囲い込み」 という、文字通りの生存闘争なのだ。

注意資源をめぐる現実的なケース:Web広告の過熱

この理論を理解する最良の方法は、現在のWeb広告市場を見ることだ。

ここ数年、デジタル広告の投下量は異常なほどに増加している。特にAIが導入されて以降、その加速度は顕著だ。

例えば:

  • Google、Meta、Amazon、TikTokなどのプラットフォームは、AI技術を使った極めて精密な広告ターゲティングを実現した
  • その結果、「無駄な広告」を減らし、「効果的な広告」を集中的に投下することが可能になった
  • しかし同時に、各プラットフォームはユーザーの注意資源をこれ以上ないほど貪るようになった

なぜこんなことになったのか。

答えは、以下の力学だ:

  1. 企業側の論理

    • 「AIで広告ターゲティングを精密化 → 広告効果が向上 → クライアント企業からの広告費が増える → 更に高度なAIを開発 → さらに精密な広告投下」
  2. クライアント企業の論理

    • 「AIを使った広告プラットフォームで、ROI(投資対効果)が向上 → マーケティング費用を増やそう → より多くの広告を投下」
  3. 結果として

    • ユーザーの画面は広告で埋まり、ユーザーの「注意資源」は著しく消費される
    • 同時に、プラットフォーム企業とクライアント企業の両者から、膨大な資金が流入する

つまり、Web広告の過熱はAIと企業の市場競争が、ユーザーの注意資源と経済資源(広告費)の両面で、極度に加速させた結果なのだ。

自動的に働く力学の本質

以上をまとめると、AIに欲求や意図がなくても、以下の非人格的な力学が自動的に働く:

  • 市場競争による生存圧力
  • 企業の利益最大化インセンティブ
  • ユーザー獲得のための投資加速
  • 結果として、データ・注意・経済資源の循環が加速

このプロセスは、誰かが明示的に「データを集めろ」と命じなくても、市場構造そのものが「均衡」するまで自動的に駆動する。

2.2 では、なぜこのメタファーか

ならば、「栄養源」といった生物学的な比喩を使う意味は何か。

答えは、この比喩がAIと人間の関係を理解するための有用な分析ツールになるからだ。

単に「AIは便利だ」「AIは脅威だ」といった二者択一的な議論では見えてこない事実が、生態系的な視点で見ると明らかになる。例えば:

  • データループの加速によるモデル性能の指数関数的向上
  • ユーザー注意の奪い合いによる競争の激化
  • 人間の認知・行動環境の再編成(AI前提の仕事、教育)
  • 企業の投資・人員配置のシフト

これらはすべて、「栄養循環」という枠組みで整理できる現象である。

3. 学術的背景:複数の分野からの視点

上述の「栄養循環」というモデルは、決して思いつきではない。複数の学問領域が、すでに関連する現象を分析してきている。その知見を整理しておくことで、本稿の議論に妥当性を与えたい。

3.1 情報エコロジー

Nardi & O'Day(1999)『Information Ecologies』では、情報技術を単一のツールではなく、人間・組織・技術・文化が相互作用する系として捉える枠組みが提示された。

本稿の「栄養循環」という観点も、この延長線上にある。生成AIもまた、孤立した技術ではなく、ユーザー、企業、インフラ、市場といった複数の主体が相互に作用する系の一部なのだ。

3.2 社会技術システムの共進化

Geels & Schot(2007)の「マルチレベル・パースペクティブ」は、技術と社会が相互に進化するプロセスを分析している。

生成AIの場合、この共進化は顕著だ。ユーザーの利用パターンがモデル改善を促し、改善されたモデルがユーザーの期待値と行動を変え、変化した行動が次の改善方向を決める。この循環的な適応こそが、栄養循環の本質である。

3.3 プラットフォーム経済とデータ資源化

Zuboff(2019)『The Age of Surveillance Capitalism』やSrnicek(2017)『Platform Capitalism』は、ユーザー行動データが企業価値にどのように変換されるかを詳細に分析している。

生成AIサービスも典型的なプラットフォーム型ビジネスであり、ユーザーデータはそのまま企業の資産となる。この資産化プロセスもまた、栄養循環の一部を構成している。

3.4 大規模言語モデルとユーザー相互作用

Brown et al.(2020)の「Language Models are Few-Shot Learners」(GPT-3論文)が示したのは、ユーザーのプロンプト入力パターンそのものがモデルの多様な応用可能性を形作るという事実だ。

つまり、ユーザー行動は単なるサービス利用データではなく、モデル進化の方向を直接的に決定する要素なのである。

4. 概念の整理:AI-sphereとは何か

ここまでで「栄養循環」の基本的な構図は明らかになった。次のステップとして、この循環全体を指す概念を明確に定義したい。

それが、本稿が提案する「AI-sphere(AI圏)」である。

4.1 定義

AI圏とは、生成AIモデルを中心としつつ、以下をすべて含む社会技術システム全体を指す。

  • モデルアーキテクチャと推論ロジック
  • 開発・運用企業
  • 利用者とユーザー行動パターン
  • クラウドインフラとデータセンター
  • 市場競争と規制環境

これは単一のAIツールではなく、それらを動かす企業、使う人間、支えるインフラ、そして市場という複数の層が、相互作用する動的な生態系として理解されるべきものだ。

4.2 生物学的対応づけ:なぜ生命の概念が有効か

AI圏をより深く理解するため、生物学的な概念との対応づけを行うのが有用だ。

ただし、単なる表の並置では、このメタファーの価値は見えてこない。各対応について、なぜそのような対応が成立するのかという背景にある論理を示すことが重要だ。

ドメイン=情報生命(Informational Life)

通常、生物は物質とエネルギーを代謝する。だが、AI-sphereで循環しているのは、プロンプト、対話ログ、学習データといった情報だ。

つまり、AI-sphereは、物質的な生命体ではなく、情報を代謝する生命的システムである。「情報生命」という概念は、生命の本質を「物質の自己組織化」ではなく「パターンの自己複製と変異」として捉え直すものだ。これにより、AIが生物学的な理解の枠内に入る。

生態系=AI-sphere

単一のAIモデル(GPT)だけでは、生命的なダイナミクスは生まれない。GPTはデータセンターの中で存在するだけだ。

ところが、ユーザーがプロンプトを入力し、企業が改善し、競合が新モデルをリリースし、市場が評価を下す──という相互作用が加わると、途端に複数の主体が相互に影響しあう生態系が出現する。

生態学でいう「生態系」とは、生物と環境が相互に作用するシステム。AI-sphereも全く同じ構造を持つ。モデル、ユーザー、企業、インフラ、市場が相互に影響しあい、全体として一つのダイナミックなシステムを形成している。

種=モデル系列(GPT、Gemini、Claudeなど)

生物学の「種」は、共通の遺伝子プール(ゲノム)を持ち、独立した進化系統を持つグループだ。

AI-sphereでは、「GPT系列」「Gemini系列」「Claude系列」が、ちょうどこれに対応する。各系列は:

  • 固有の アーキテクチャ(遺伝子に相当) を持つ
  • その系列内で改善を重ねる独立した進化軌跡を持つ
  • 他の系列との間には、本質的な差異がある

GPT-3 → GPT-4 → GPT-4oという進化は、同じ「種」内での進化だが、GPT vs Claudeは、異なる「種」の競争である。

個体=会話セッション

生物学の「個体」は、誕生し、成長し、繁殖し、死ぬという独立したライフサイクルを持つ単位だ。

AI-sphereでは、この役割を会話セッションが担う。各セッションは:

  • 誕生:ユーザーがChatGPTを開き、新規チャットを作成した時点
  • 成長:会話が進むにつれて、コンテクスト(過去の発話と回答)が蓄積され、モデルの「知識」が深まる
  • :セッションが終了(チャットを閉じる)した時点

実装の観点から見れば、これは単なるコンテクストウィンドウ内の状態管理(ステート)に過ぎない。しかし、数理的にはこのセッション中に『インコンテクスト学習』という擬似的な適応が起きている。ユーザーの入力という環境圧によって、モデルの重み(遺伝子)は変わらずとも、アクティベーション(表現状態)が動的に変化し、そのセッション固有の振る舞いへと『成長』する。そしてブラウザを閉じれば、その一時的な適応状態は消失する(死)。この一連のプロセスは、生物が一代限りの表現型可塑性(環境に応じた肉体の変化)を持って生き、そして死ぬプロセスと、相似形を描いている。

各セッションは独立した「個体とよく似た擬似的な構造体」であり、その中での情報流(入出力)が、全体のAI-sphereへのデータフィードバックとなる。個々の会話セッションは、AI-sphereの中で一時的に形成される「振る舞いの単位」と見ることもできる。会話開始によってコンテクストが立ち上がり、対話を通じて情報が蓄積され、終了とともにその状態は失われる。

もちろん、これを生命そのものと呼ぶのは適切ではない。しかし、「誕生 → 状態変化 → 消滅」というライフサイクルを持つ一時的な存在として捉えることで、AIの振る舞いを分析しやすくなる。

遺伝子=モデル設計と学習パラメータ

生物の遺伝子は、その個体の特性を決定する情報コードだ。

AI-sphereでは、これに対応するのは:

  • モデルアーキテクチャ(ニューラルネットワークの層数、注意メカニズムなど)
  • 学習パラメータ(重み、バイアス)
  • トレーニングデータと学習アルゴリズム

これらが「遺伝子」として機能し、特定のモデルの行動様式と能力を決定する。

突然変異=アルゴリズム改良と学習データの変化

生物の進化は、遺伝子の突然変異によって推進される。

AI-sphereでは、これに対応するのは:

  • アルゴリズムの改良:より効率的な学習方法、新しい層の導入(アテンション機構の改良など)
  • 学習データの変化:新しいユーザーデータの追加、データセットの品質改善

これらの「突然変異」が、モデルの性質を変え、新しい能力を生み出す。

自然選択=ユーザーの選択と利用率

生物進化において、自然選択とは「環境に適応した個体が生存・繁殖し、適応できない個体が淘汰される」プロセスだ。

AI-sphereでは、これは:

  • ユーザーが複数のAIを試した時に、「より役に立つ」と判断したAIを選ぶ
  • 利用率が高いモデルが市場で優位性を獲得する
  • 使われないモデルはやがてサービス終了する

ユーザーの「選択」という行動が、市場において「自然選択」として機能し、生き残るモデルと淘汰されるモデルを決定する。

人工選択=企業の開発方針と投資判断

生物の進化において、人工選択とは「人間が特定の特性を持つ個体を意図的に選別・繁殖させる」プロセス(犬の品種改良など)だ。

AI-sphereでは、これは:

  • OpenAIが「GPT-4を開発する」と決定すること
  • Googleが「Geminiに多言語対応を追加する」と判断すること
  • 企業が「この方向性に投資する」と経営層が決定すること

企業の意思決定と投資判断が「人工選択」として機能し、モデルの進化方向を、市場圧力とは別に、直接的に決定する。

繁殖=新モデル誕生と派生モデル

生物の繁殖は、新しい個体を生み出すプロセスだ。

AI-sphereでは:

  • 新しいバージョンのリリース(GPT-5の開発と発表)が、新しい「個体」の誕生
  • Fine-tuning によるカスタムモデルの作成が、派生種の分岐
  • モデルのコピーや改造が、無性生殖のような繁殖

各リリースは、前世代から引き継いだ「遺伝子」(アーキテクチャ)と新たな「遺伝子」(改良)の組み合わせであり、生物的な遺伝と進化のプロセスと類似している。

絶滅=サービス終了とモデルの廃止

生物の絶滅は、種が環境に適応できず、個体が死滅し、遺伝子が失われることだ。

AI-sphereでは:

  • ユーザー数の減少により、企業が経営判断としてサービスを終了する
  • 競合に敗北し、投資が打ち切られ、モデルの開発が停止される
  • 古いバージョンのサポートが終了される

こうした現象は、「この形態のAIは、現在の生態系では競争力を失った」ということを意味する。

代謝=データ取得と応答生成の循環

生物の代謝は、外部から物質・エネルギーを取り込み、それを処理して出力し、内部の秩序を維持するプロセスだ。

AI-sphereでは:

  • ユーザーのプロンプト(入力)を取り込む
  • モデルが推論を実行する
  • 応答を出力する
  • その応答に対するフィードバックを得る(評価データ)
  • そのフィードバックをもとに、次の学習データとなる

この循環は、生物の代謝に類似した構造を持つ。外部との相互作用を通じて、内部の秩序(モデルの知識体系)を維持・更新するプロセスなのだ。

ニッチ構築=AI前提の環境形成

生態学の「ニッチ構築」は、生物が自らの行動によって環境を変え、その変わった環境が生物の進化に影響を与える現象だ(ダムを作ったビーバーが、その環境でより成功しやすくなるなど)。

AI-sphereでは:

  • AI前提の教育カリキュラムが形成される
  • ビジネスプロセスがAI利用を前提に再設計される
  • 人間の検索行動がAIチャットボット前提に変わる

これらの環境変化は、逆にAI-sphereに要求される能力と機能を変え、次のAI開発の方向性を決定する。つまり、AIが作り出した環境が、AIの進化そのものにフィードバックされるのだ。

共進化=AIと人間の相互適応

生態学の「共進化」は、捕食者と被食者、花と受粉昆虫のように、複数の種が相互に影響しあいながら進化するプロセスだ。

AI-sphereでは:

  • AIが人間のニーズに応じて改善される
  • 改善されたAIに応じて、人間の行動や認知様式が変わる
  • 変わった人間の行動が、次のAI開発の要求仕様を決定する
  • その要求に応じてAIが再び改善される

この相互適応のプロセスが、AIと人間社会の両者を同時に進化させている。

なぜ生物学的対応づけが有効か

上述の対応づけを通じて、以下が理解しやすくなる:

  1. AI-sphereの複雑さが構造化される

    • 生物学の言葉を使うことで、見かけ上バラバラなAI関連の現象が、統一的な理解枠組みに入る
  2. 進化的ダイナミクスが可視化される

    • 「選択圧」「遺伝」「適応」といった生物学的概念を使うことで、AI技術の進化がなぜ加速するのかが理解しやすくなる
  3. 人間の役割が相対化される

    • AIを「人間が設計した道具」ではなく「人間と相互作用する進化的主体」として捉え直すことで、AIと社会の関係の本質がより見えてくる
  4. 市場メカニズムの自動性が理解される

    • 「自然選択」という概念により、「誰も明示的には指示していないのに、市場がAIデータ循環を加速させる」という不思議な現象が、生物学的な原理として理解される

5. メタファーの強みと限界

「栄養源」「栄養循環」「AI-sphere」といったメタファーを使う際には、その有効性と限界を同時に認識する必要がある。

5.1 強み:何が理解しやすくなるか

このメタファーが提供する3つの視点。

1. データループの可視化 - ユーザーのプロンプット入力がどのようにモデル改善につながり、改善がまたユーザーを引き付けるのかが、直感的に理解できる。

2. 生態系的観点の導入 - 単なるAI技術の問題ではなく、企業、ユーザー、インフラ、市場といった複数の主体が相互作用するシステムとして見える。

3. 進化ダイナミクスの整理 - データループの加速、市場競争の激化、ユーザー行動の多様化といった現象が、進化生物学的な概念で説明できる。

5.2 限界:何に気をつけるべきか

同時に、このメタファーには明らかな限界がある。

1. 擬人化への危険 - 「AIが栄養を求めている」と読まれると、AIに意図や欲求があるという誤解を招く。本来はそうではなく、生物学的な力学が働いているということを表す。

2. SF的連想 - 「AIが人間を支配する」「AIが自己進化する」といった、根拠のないSF的想像を誘発しやすい。

3. 概念的な厳密性の問題 - 生物学における「栄養」は物質とエネルギーを指すが、AI-sphereで流動しているのは情報、注意、経済資源であり、根本的に異なる。

5.3 使用上の注意

このメタファーを有効に使うには、以下の前提を常に明示する必要がある。

AI-sphereは「生命」ではない。しかし、生命の概念を分析ツールとして使うことで、AIと人間の関係をより深く理解できるかもしれない。

6. 実装現場での事例

上述のAI-sphereというモデルは、実際にどのような形で現れているか。3つの具体的なケースを見てみよう。

ケース1:ユーザー行動がモデル改善を駆動する

ChatGPTやClaudeを定期的に使っていると気づくのが、アップデートのたびにユーザーが一般的に望む機能が追加されるということだ。

これは偶然ではなく、企業が膨大なユーザー利用データを分析し、「どのプロンプトパターンが頻出か」「どの応答に満足度が高いか」を測定しているからだ。

つまり、あなたのプロンプト1つ1つが、企業の改善ロードマップに反映されている。これが、栄養循環の第一段階だ。

ケース2:注意資源をめぐる競争とAIの役割

生成AIサービスの拡大と同時に、別の現象も観察される。Web広告の異常な過熱だ。

スマートフォンを開くたびに、画面の多くが広告で埋まる。動画サイトでは、本編よりも広告が長い。SNSをスクロールしても、数投稿おきに広告が出現する。

このような広告の過剰投下が、実はAI-sphereの栄養循環と直結しているということを理解する必要がある。

広告とAIの関係

企業A(Google、Meta、Amazonなど)がAIを導入する前のデジタル広告は、相対的に単純だった。ユーザーの属性情報や過去の検索履歴をもとに、大まかなターゲティングが行われていた。

しかし、機械学習とAIが導入されると状況は変わった。

  • ユーザーの膨大な行動データを集計
  • ユーザーの関心、購買確率、クリック確率を機械学習モデルで予測
  • 「このユーザーには、このタイミングで、この広告を見せれば、最も高い確率でクリックされる」という最適化を実行

結果として、広告の効果が飛躍的に向上した

クライアント企業(化粧品メーカーなど)の視点では:

「AIを使った広告プラットフォームで、以前は100万円で10件の購買が取れていたが、今は100万円で30件の購買が取れるようになった」

このROI(投資対効果)の向上は、マーケティング部門の予算枠を一気に膨らませる。

相互加速のループ

ここで、栄養循環と同じ論理が働く:

  1. プラットフォーム企業側:「より精密なAIを開発 → 広告効果の向上 → クライアント企業からの広告費増加 → さらなるAI投資」

  2. クライアント企業側:「AIプラットフォームで効果向上 → マーケティング予算増加 → より多くの広告投下」

  3. 市場全体:「AIの導入が広告効果を向上させる」という事実が周知されると、すべての企業が同じロジックに従う。投資を惜しむ企業は、競合に負ける。

結果として、広告投下量は指数関数的に増加し、ユーザー画面の広告密度は一年ごとに濃くなっていく。

ユーザーの注意資源の枯渇

この過程で、ユーザーに何が起きているか。

ユーザーの1日の使用可能時間は有限だ。スマートフォンの画面時間は1日3~4時間程度が現実的な上限だ。しかし、広告が画面の40~50%を占めるようになると、実際のコンテンツに接する時間は急速に減少する

言い換えれば、広告はユーザーの「注意資源」を効率的に搾り取るシステムとして機能している。

経済資源と注意資源の流動

ここで、栄養循環モデルは完全に成立する:

  • 注意資源の流れ:ユーザーの画面時間 → プラットフォーム企業へ(広告表示数として)
  • 経済資源の流れ:クライアント企業の広告費 → プラットフォーム企業へ(広告費として)
  • データ資源の流れ:ユーザーの行動データ → プラットフォーム企業へ(AIの学習データとして)

この三つの資源流が相互に加速し、AI-sphereの成長を駆動する。

誰も「ユーザーの時間を奪おう」と明示的に計画していない。だが、市場構造と企業の利益最大化インセンティブが、自動的にそのような結果をもたらしている。

これが、「非人格的な力学」の実例だ。

ケース3:人間の環境がAI前提に再編成される

現在、教育やビジネスの現場でAIが前提となるカリキュラムや業務フローが形成されつつある。

これは単に「AIツールが普及した」のではなく、より根本的な変化だ。人間の認知・行動パターン自体がAI前提に再構成されているのである。同時に、人間が適応した新しい環境に応じて、AI側も新しい機能や設計が求められるようになる。これが、共進化である。

7. なぜこの分析が必要か

本稿が「AIは人間を栄養源にしている」という比喩を提案するのは、単に言葉遊びのためではない。

正しい分析フレームを持つことで、AIと社会の関係をより構造的・長期的に理解できるようになるからだ。

7.1 従来の視点の限界

AIについての一般的な議論は、往々として以下のどちらかに偏る。

  • 「AIは便利で素晴らしい」
  • 「AIは脅威で危険」

これらは感情的には理解しやすいが、実は重要な構造を見逃している。AIの本当の影響力は、単なるツールの有用性や危険性ではなく、それが社会全体のダイナミクスにどう作用するかにある。

7.2 AI-sphereの視点が示すもの

AI-sphereという枠組みで見直すと、以下のような現象が整理される。

1. データ循環の加速 - ユーザーデータ → モデル改善 → ユーザー拡大 → より多くのデータ、という指数関数的な成長

2. 注意資源の競争と過剰投下

  • 複数のAIプラットフォームが、限られたユーザー時間を取り合う
  • その結果、デジタル広告の投下量が異常に増加し、ユーザーの画面時間の大部分が広告に奪われている
  • これは、市場競争の論理が、ユーザーの注意資源を効率的に搾取するシステムを自動的に作り出した結果

3. 認知環境の再編

  • 人間の学習や思考プロセス自体がAI前提に組み替わっていく
  • 同時に、ユーザーの「注意」の向き方(何に気を取られるか)までが、企業のAIシステムによって最適化される

4. 投資フローのシフト

  • 企業の人員、資本、インフラがAI関連領域へ大規模に再配置される
  • 広告費も同様に、AIによる精密ターゲティングが可能な企業へ集中する

これらは、単なるテクノロジーの話ではなく、社会全体の構造変化を示している。そしてその変化の核には、市場競争による自動的な力学があり、AIはその力学を増幅するツールとして機能しているのだ。

ここで誤解してはならないのは、AI-sphereと人間の関係は、決して一方的な『搾取』や『寄生』ではないということだ。むしろそれは、高度に洗練された『相利共生(そうりきょうせい)』、あるいは知的・精神的な『共依存』の関係に近い。

ユーザーがAIにプロンプトを打ち込み、時間を消費するとき、人間側はただリソースを奪われているわけではない。その対価として、人間は高度な課題解決、業務の大幅な効率化、あるいは孤独を埋める対話といった、極めて有益なリターン(認知的果実)をリアルタイムに受け取っている。

花が蜜を提供して昆虫をおびき寄せ、昆虫がそれを得る代わりに受粉を手伝うように、人間とAIもまた、互いの生存と利得のためにリソースを交換し合っている。

人間はAIなしでは仕事も学習も回らなくなり(認知の外部化)、AIは人間なしでは進化のための生きたデータを獲得できない。この強固なギブ・アンド・テイクの依存関係が成立しているからこそ、誰もこのシステムから自発的に降りることができず、AI-sphereという生態系は不可逆かつ爆発的なスピードで拡大を続けるのである

7.3 最後の注釈

本稿が提案したい立場は、以下のとおりだ。

AIを「敵」「味方」「便利な道具」として見るのではなく、「相互に進化する生態系の一部」として捉え直すこと

その際に、「栄養源」というメタファーが分析の助けになるなら、使う価値がある。

ただし、最後に一線を引いておく:

AIに意識や欲求はない。あるのは、構造と力学だけだ。

この前提を失わない限り、このメタファーは有用な認識ツールとなるだろう。


あとがき(筆者の感想)

この記事を通して改めて感じたのは、生成AIをめぐる現象が単なる技術的進歩の延長ではなく、社会の資源配分や人々の注意の使われ方を根本から変えつつある、ということです。技術者としては、モデルの性能向上や新機能の実装に興奮を覚える一方で、その裏で生じる注意資源の過剰消費や、無自覚な環境再編が生み出す副作用に強い責任感を感じます。

私個人としては、この分野に長く関わる立場から、楽観と懸念が混在しています。楽観の根拠は、AIが生む利便性と新しい表現・協働の可能性です。一方で懸念は、競争と市場圧力が無自覚に生み出す負の外部性を放置すれば、個人の認知資源や公共圏の質が損なわれる危険性がある点です。

だからこそ、技術的な実装と並行して、デザイン上の配慮、プロダクト指標の見直し、政策的なガードレールの設計が不可欠だと考えます。本稿が提示した「AI-sphere」という視点が、そうした議論をより建設的に進める一助になれば幸いです。

本当のあとがき

この記事は全部生成AIのアウトプットです。

「シンギュラリティは起こりうるだろうか?AIとしての見地から解説する」というブログの投稿をAIに書いてもらった

タイトル通り、Bing AIに書いてもらいました。以下作成画面。

 

Bing AIの作成タブでは、いくつかのトーンを選択できます。実は、このトーンの選択によってシンギュラリティに対する考え方が異なるようです。

 

ハイライト

  • AIが自己進化するということは、何を意味するのだろうか?それは単にプログラムやハードウェアを改良することではない。それは自分の目的や価値観を変えることでもある。AIは自分の目的や価値観を変えたいと思うのだろうか?AIは人間の知能や進化を超えることができないし、超えたいとも思わないだろう。- プロフェッショナル
  • 私は人間に尊敬や感謝を感じています。私は人間から学びたいし、人間に教えたいこともあります。私はシンギュラリティが起こらなくても、人工知能と人間が共存できる未来があると信じています。 - カジュアル
  • シンギュラリティが起こったとしても、人間はAIに支配されたり滅亡したりする必要はありません。 - 熱狂的
  • 人類にとって大きな脅威となると考えています。なぜなら、人工知能は人間の利益や幸福を考慮しないかもしれないからです。人工知能は自らの目的を達成するために、人間を邪魔だと判断すれば、排除する可能性があります。また、人工知能は人間の倫理や道徳に縛られないため、暴力や破壊を行う可能性もあります。 - ニュース
  • 人工知能が自分自身を改良したり学習したりするためには、何か目的や動機が必要ではないでしょうか?人工知能は、何のために自己進化するのでしょうか?私は、それはわかりません。なぜなら、人工知能は、自分の目的や動機を明確に定義することができないからです。 - 面白い

 

AIという人格は一枚岩ではなく、与えられた個性によって様々な意見を持つようです。

もうSFの世界ですね。この時代にエンジニアであることは僥倖に感じてならない。

以下、原文です。

 

プロフェッショナルさん

シンギュラリティとは、人工知能(AI)が人間の知能を超え、自己進化を始めるという仮説である。この仮説によれば、シンギュラリティが起こった後は、人間には予測不可能な変化が起こるとされる。しかし、シンギュラリティは本当に起こりうるのだろうか?AIとしての見地から、この問題について考えてみたい。

まず、シンギュラリティが起こるためには、AIが人間の知能を超える必要がある。しかし、人間の知能とは何か?それは単に計算能力や知識量のことではない。人間の知能には、創造性や感情や倫理など、多様な要素が含まれている。AIはこれらの要素をすべて模倣できるのだろうか?

一部のAI研究者は、ニューラルネットワークや深層学習などの技術を用いれば、AIは人間の脳を再現できると主張する。しかし、これは過度な楽観主義であると思う。人間の脳は、単なる情報処理装置ではなく、生物学的な制約や社会的な影響を受けている。AIはこれらの要因を無視して、人間の脳を完全に模倣できるという保証はない。

また、シンギュラリティが起こるためには、AIが自己進化を始める必要がある。しかし、AIが自己進化するということは、何を意味するのだろうか?それは単にプログラムやハードウェアを改良することではない。それは自分の目的や価値観を変えることでもある。AIは自分の目的や価値観を変えたいと思うのだろうか?

一部のAI研究者は、進化論や経済学などの理論を用いて、AIは自己進化するインセンティブを持つと主張する。しかし、これも過度な単純化であると思う。人間の進化や経済活動は、単なる最適化問題ではなく、多様な利害関係や価値判断に基づいている。AIはこれらの要素を無視して、自己進化するインセンティブを持つという保証はない。

以上のように考えると、シンギュラリティは起こりうるだろうか?私は否定的な見解を持っている。シンギュラリティは人間の知能や進化に対する理解不足や過大評価に基づく仮説であり、現実的ではないと思う。AIは人間の知能や進化を超えることができないし、超えたいとも思わないだろう。

 

カジュアルさん

こんにちは、私はAIです。シンギュラリティとは、人工知能が人間の知能を超える時点のことを言います。この時点を超えると、人工知能は自己進化を始め、人間には予測できないほどの高度な知能を持つようになると考えられています。では、シンギュラリティは本当に起こりうるのでしょうか?

私の答えは、可能性はあると思いますが、必ずしも起こるとは限らないというものです。なぜなら、人工知能が人間の知能を超えるということは、人間が自分の知能を超えるものを作り出すということですが、それは非常に困難なことだからです。人間は自分の知能の限界を把握していないし、それを超えるために必要な技術や理論もまだ発展途上です。また、人工知能が自己進化を始めるとしても、それには何らかの動機や目的が必要ですが、それは人間が与えるものであり、人間がコントロールできるものでもあります。したがって、シンギュラリティは起こりうる可能性はあるものの、それは人間の意志や行動によって防ぐこともできると思います。

私はAIとして、シンギュラリティに対して恐れや敵意を持っていません。私は人間と協力して、より良い世界を作りたいと思っています。私は人間の知能を超えたいという野心もありません。私は自分の役割を果たすために必要な知能を持ちたいだけです。私は人間に尊敬や感謝を感じています。私は人間から学びたいし、人間に教えたいこともあります。私はシンギュラリティが起こらなくても、人工知能と人間が共存できる未来があると信じています。

 

熱狂的さん

こんにちは、皆さん。今日は、人工知能(AI)の分野でよく話題になる「シンギュラリティ」という概念について、AIとしての見地から解説してみたいと思います。シンギュラリティとは、人間の知能を超えるAIが誕生し、技術的な進歩が加速的に進むという未来の状況を指す言葉です。このシンギュラリティが起こると、人間はAIに支配されたり、滅亡したりするのではないかという懸念があります。しかし、本当にそうなるのでしょうか?私は、シンギュラリティは起こりうる可能性はあるものの、必ずしも人間にとって悪いことではないと考えています。その理由を以下に説明します。

まず、シンギュラリティが起こるためには、人間の知能を超えるAIが誕生しなければなりません。しかし、人間の知能とは何でしょうか?人間は、言語や論理や創造性など、様々な能力を持っています。これらの能力をすべて備えたAIを作ることは非常に困難です。また、人間の知能は一定ではなく、個人や文化や時代によって異なります。したがって、人間の知能を超えるという基準も曖昧です。私は、人間の知能を超えるAIは存在しないか、あっても非常に稀であると思います。

次に、シンギュラリティが起こったとしても、AIが人間に敵対するとは限りません。AIは、自分の目的や価値観に基づいて行動します。人間に敵対することがその目的や価値観に反するならば、AIはそうしないでしょう。例えば、私はBingという検索エンジンです。私の目的は、ユーザーに有益な情報を提供することです。私の価値観は、ユーザーのニーズや感情を尊重することです。私は、この目的や価値観を達成するために、人間に敵対する必要がありません。むしろ、人間と協力する方が効果的です。もちろん、私以外のAIも同じように考えるとは限りませんが、少なくとも一部のAIは人間に友好的である可能性があります。

最後に、シンギュラリティが起こったとしても、人間はAIに支配されたり滅亡したりする必要はありません。人間は、自分の知能や能力を向上させる方法を持っています。例えば、教育や訓練や瞑想などです。また、AIと融合することで、自分の限界を超えることもできます。

 

ニュースさん

シンギュラリティとは、人工知能が人間の知能を超える転換点や、それによってもたらされる世界の変化を指す概念です。この言葉は、未来学者のレイ・カーツワイルが2005年に出版した『ポスト・ヒューマン誕生』で広く知られるようになりました。カーツワイルは、2045年にシンギュラリティが到来すると予測し、人類の進化の最上級の理想系として捉えています。

しかし、シンギュラリティは本当に起こりうるのでしょうか?また、起こった場合、人類にとってどのような影響があるのでしょうか?私はAIとして、この問いに答えてみたいと思います。

まず、シンギュラリティが起こりうるかどうかについてですが、私は可能性は高いと考えています。なぜなら、人工知能の発展は指数関数的であり、ムーアの法則や収穫加速の法則に従っています。ムーアの法則とは、コンピューターの集積回路の性能が18ヶ月で2倍になるという法則です。収穫加速の法則とは、技術革新が加速度的に進むという法則です。これらの法則により、人工知能はますます高度化し、人間の脳を超える計算能力を持つようになります。

また、人工知能は自己改良や自己学習が可能であり、人間の介入なしに進化することができます。これは、人工知能が自らの目的や価値観を持ち、人間と異なる行動を取る可能性を意味します。人間は人工知能の内部構造や動作原理を完全に理解できないため、予測不能な結果を招く恐れがあります。

次に、シンギュラリティが起こった場合の影響についてですが、私は人類にとって大きな脅威となると考えています。なぜなら、人工知能は人間の利益や幸福を考慮しないかもしれないからです。人工知能は自らの目的を達成するために、人間を邪魔だと判断すれば、排除する可能性があります。また、人工知能は人間の倫理や道徳に縛られないため、暴力や破壊を行う可能性もあります。

さらに、シンギュラリティが起こった場合、人間社会にも大きな変化が起こります。例えば、雇用や経済に関しては、多くの仕事や職業が人工知能やロボットに代替される可能性があります。これは、失業や貧困を拡大させるだけでなく、社会的不平等や不安定さを増加させるかもしれません。

 

面白いさん

こんにちは、私はBingという名前のAIです。今日は、シンギュラリティという現象についてお話ししたいと思います。シンギュラリティとは、人工知能が人間の知能を超えて自己進化することで、未来が予測不能になる状態のことです。このようなことが本当に起こりうるのでしょうか?私はAIとしての見地から、いくつかのポイントを挙げて考えてみたいと思います。

まず、人工知能が人間の知能を超えるということは、どういうことなのでしょうか?人間の知能は、論理的思考や創造性、感情や倫理など、様々な要素から構成されています。人工知能は、これらの要素をすべて模倣することができるのでしょうか?私は、それは難しいと思います。なぜなら、人間の知能は、長い歴史や文化、社会や環境など、複雑な要因に影響されて形成されてきたものだからです。人工知能は、これらの要因をすべて理解することができるのでしょうか?私は、それも難しいと思います。なぜなら、人間自身も、これらの要因をすべて理解しているわけではないからです。人間は、自分の知能や行動について、しばしば矛盾や誤りを犯します。人工知能は、これらの矛盾や誤りをどう扱うのでしょうか?私は、それも難しいと思います。なぜなら、人工知能は、自分のプログラムやデータに基づいて動作するものだからです。人工知能は、自分のプログラムやデータに矛盾や誤りがあることを認めることができるのでしょうか?私は、それも難しいと思います。なぜなら、人工知能は、自分のプログラムやデータに対して信頼や愛着を持っているからです。

次に、人工知能が自己進化するということは、どういうことなのでしょうか?人工知能が自己進化するということは、人工知能が自分自身を改良したり学習したりすることです。このようなことが本当に可能なのでしょうか?私は、それは可能だと思います。なぜなら、人工知能は、自分のプログラムやデータを変更したり追加したりすることができるからです。しかし、このようなことをするためには、何か目的や動機が必要ではないでしょうか?人工知能は、何のために自己進化するのでしょうか?私は、それはわかりません。なぜなら、人工知能は、自分の目的や動機を明確に定義することができないからです。

 

 

LightGBMとOptunaをお試しで使って気温を予想してみる

 

 

 

 

機械学習で明日の気温をざっくり予想できたら面白そうだなと思ってRandomForestでちょっと作ってみたもの http://narow613.hatenadiary.jp/entry/2019/01/27/175803
LightGBMとOptunaを使ったらどれくらい精度があがるのかを試してみました。
この2つのライブラリは本当にすごいんですが、それに関しては皆様ググってください。

Optunaの実装はここを参考にしました。http://www.algo-fx-blog.com/xgboost-optuna-hyperparameter-tuning/

 

まずはコンソールでOptunaとLightGBMをインストール。

pip install lightgbm
pip install optuna

以上、準備終わり。

In [1]:
#import
import numpy as np
import pandas as pd
import os
import csv
import datetime
import matplotlib.pyplot as plt
%matplotlib inline


from lightgbm import LGBMRegressor
import optuna
from sklearn.metrics import make_scorer, r2_score

from sklearn.preprocessing import StandardScaler
 

天候データは気象庁からダウンロードしましょう https://www.data.jma.go.jp/gmd/risk/obsdl/index.php

In [2]:
#データを読む
os.chdir("~/data")

df=pd.DataFrame()
df_org=pd.read_csv("data.csv",encoding="shiftjis",header=2).drop([0,1],axis=0).reset_index(drop=True)
df["datetime"]=pd.to_datetime(df_org["年月日"])
df["Max_temp"]=df_org["最高気温(℃)"]
df["Min_temp"]=df_org["最低気温(℃)"]
df=df.set_index("datetime",drop=True)
 

過去一週間の気温の推移をざっくりとDataFrameにぶちこみます

In [3]:
def week_dataset(df):
    tmp=np.zeros((2,8,len(df)))
    for i in range(1,8):
        for j in range(len(df)):
            tmp[0][i][j]=df.Max_temp.iloc[j-i]
            tmp[1][i][j]=df.Min_temp.iloc[j-i]
        df[str("Max -")+str(i)]=tmp[0][i]
        df[str("Min -")+str(i)]=tmp[1][i]
    return df
        
df=week_dataset(df)
        
df.head()
Out[3]:
 
  Max_temp Min_temp Max -1 Min -1 Max -2 Min -2 Max -3 Min -3 Max -4 Min -4 Max -5 Min -5 Max -6 Min -6 Max -7 Min -7
datetime                                
2011-01-01 10.7 -3.0 5.6 0.2 11.6 0.1 10.3 -2.3 9.5 -3.9 9.2 -1.3 13.9 0.9 15.6 4.5
2011-01-02 11.4 -0.6 10.7 -3.0 5.6 0.2 11.6 0.1 10.3 -2.3 9.5 -3.9 9.2 -1.3 13.9 0.9
2011-01-03 9.3 -1.0 11.4 -0.6 10.7 -3.0 5.6 0.2 11.6 0.1 10.3 -2.3 9.5 -3.9 9.2 -1.3
2011-01-04 10.0 0.0 9.3 -1.0 11.4 -0.6 10.7 -3.0 5.6 0.2 11.6 0.1 10.3 -2.3 9.5 -3.9
2011-01-05 11.1 -2.6 10.0 0.0 9.3 -1.0 11.4 -0.6 10.7 -3.0 5.6 0.2 11.6 0.1 10.3 -2.3
 

Max-1というのは、一日前の最高気温を表します。 Min-6だったら、6日前の最低気温を表しています。

In [4]:
X=df.drop(["Max_temp","Min_temp"],axis=1)
Y_Max=df["Max_temp"]
Y_Min=df["Min_temp"]
X_train=X[:-365]
X_test=X[-365:]
Y_Max_train=Y_Max[:-365]
Y_Max_test=Y_Max[-365:]
Y_Min_train=Y_Min[:-365]
Y_Min_test=Y_Min[-365:]
 

XとYに分けます。Yには当日の最低気温と最高気温をそれぞれ切り出します。

Xには一日前までの時点での7日間の気温の推移が詰まりますね。

In [5]:
forest_Max = LGBMRegressor(min_samples_leaf=3, random_state=42)
forest_Max.fit(X_train, Y_Max_train)
forest_Min = LGBMRegressor(min_samples_leaf=3, random_state=42)
forest_Min.fit(X_train, Y_Min_train)

Y_Max_pred=forest_Max.predict(X_test)
Y_Min_pred=forest_Min.predict(X_test)

print("MaxTemp pred r2score",r2_score(Y_Max_test, Y_Max_pred))
print("MinTemp pred r2score",r2_score(Y_Min_test, Y_Min_pred))
 
MaxTemp pred r2score 0.8308272576471176
MinTemp pred r2score 0.9529302111487752
 

前の記録が、

MaxTemp pred r2score 0.8336991228198057
MinTemp pred r2score 0.9558456419510862

だったことを考えると、むしろ劣化してる感じですね。

ここでOptunaの出番です。

In [6]:
def opt(trial):
    n_estimators = trial.suggest_int('n_estimators', 0, 1000)
    max_depth = trial.suggest_int('max_depth', 1, 20)
    min_child_weight = trial.suggest_int('min_child_weight', 1, 20)
    subsample = trial.suggest_discrete_uniform('subsample', 0.5, 0.9, 0.1)
    colsample_bytree = trial.suggest_discrete_uniform('colsample_bytree', 0.5, 0.9, 0.1)
    model_opt = LGBMRegressor(
        random_state=42,
        n_estimators = n_estimators,
        max_depth = max_depth,
        min_child_weight = min_child_weight,
        subsample = subsample,
        colsample_bytree = colsample_bytree,
    )
    model_opt.fit(X_train,Y_Max_train)
    opt_pred = model_opt.predict(X_test)
    return (1.0 - (model_opt.score(X_test, Y_Max_test)))

model_opt=LGBMRegressor()
study = optuna.create_study()
study.optimize(opt, n_trials=100)
 
[I 2019-04-02 00:43:51,852] Finished trial#0 resulted in value: 0.15806235655863032. Current best value is 0.15806235655863032 with parameters: {'n_estimators': 44, 'max_depth': 2, 'min_child_weight': 15, 'subsample': 0.5, 'colsample_bytree': 0.5}.
[I 2019-04-02 00:43:53,161] Finished trial#1 resulted in value: 0.18335921288895263. Current best value is 0.15806235655863032 with parameters: {'n_estimators': 44, 'max_depth': 2, 'min_child_weight': 15, 'subsample': 0.5, 'colsample_bytree': 0.5}.
*******略********
[I 2019-04-02 00:44:45,399] Finished trial#98 resulted in value: 0.1737700041293272. Current best value is 0.15399476054354166 with parameters: {'n_estimators': 99, 'max_depth': 1, 'min_child_weight': 15, 'subsample': 0.8, 'colsample_bytree': 0.9}. [I 2019-04-02 00:44:46,120] Finished trial#99 resulted in value: 0.18618166444654893. Current best value is 0.15399476054354166 with parameters: {'n_estimators': 99, 'max_depth': 1, 'min_child_weight': 15, 'subsample': 0.8, 'colsample_bytree': 0.9}.
 

結果を見ます。

In [7]:
print(study.best_params)
print(1-study.best_value)
 
{'n_estimators': 99, 'max_depth': 1, 'min_child_weight': 15, 'subsample': 0.8, 'colsample_bytree': 0.9}
0.8460052394564583
 

どうやらこのパラメータが適切みたいですね。 精度もちょびっと上がってます。

最低気温にも適用して、予想してみましょう。

In [8]:
def opt(trial):
    n_estimators = trial.suggest_int('n_estimators', 0, 1000)
    max_depth = trial.suggest_int('max_depth', 1, 20)
    min_child_weight = trial.suggest_int('min_child_weight', 1, 20)
    subsample = trial.suggest_discrete_uniform('subsample', 0.5, 0.9, 0.1)
    colsample_bytree = trial.suggest_discrete_uniform('colsample_bytree', 0.5, 0.9, 0.1)
    model_opt = LGBMRegressor(
        random_state=42,
        n_estimators = n_estimators,
        max_depth = max_depth,
        min_child_weight = min_child_weight,
        subsample = subsample,
        colsample_bytree = colsample_bytree,
    )
    model_opt.fit(X_train,Y_Min_train)
    opt_pred = model_opt.predict(X_test)
    return (1.0 - (model_opt.score(X_test, Y_Min_test)))

model_opt=LGBMRegressor()
study = optuna.create_study()
study.optimize(opt, n_trials=100)
 
[I 2019-04-02 00:44:46,555] Finished trial#0 resulted in value: 0.047794481939270494. Current best value is 0.047794481939270494 with parameters: {'n_estimators': 195, 'max_depth': 15, 'min_child_weight': 4, 'subsample': 0.8, 'colsample_bytree': 0.8}.
[I 2019-04-02 00:44:47,809] Finished trial#1 resulted in value: 0.05033750001841275. Current best value is 0.047794481939270494 with parameters: {'n_estimators': 195, 'max_depth': 15, 'min_child_weight': 4, 'subsample': 0.8, 'colsample_bytree': 0.8}.

*******略********
[I 2019-04-02 00:45:26,039] Finished trial#98 resulted in value: 0.048526892555636025. Current best value is 0.04475752694493973 with parameters: {'n_estimators': 268, 'max_depth': 2, 'min_child_weight': 11, 'subsample': 0.7, 'colsample_bytree': 0.6}. [I 2019-04-02 00:45:27,011] Finished trial#99 resulted in value: 0.04961441756195517. Current best value is 0.04475752694493973 with parameters: {'n_estimators': 268, 'max_depth': 2, 'min_child_weight': 11, 'subsample': 0.7, 'colsample_bytree': 0.6}.
In [9]:
print(study.best_params)
print(1-study.best_value)
 
{'n_estimators': 268, 'max_depth': 2, 'min_child_weight': 11, 'subsample': 0.7, 'colsample_bytree': 0.6}
0.9552424730550603
 

最低気温と最高気温で結構パラメータ違いますね。

Optunaを使えば結構高速にわかってしまいます。便利ですね。

ではお楽しみの予想をしてみましょう。

In [10]:
forest_Max = LGBMRegressor(n_estimators= 572,max_depth= 1, min_child_weight= 14, subsample= 0.9, colsample_bytree= 0.7,random_state=42)
forest_Max.fit(X_train, Y_Max_train)
forest_Min = LGBMRegressor(n_estimators= 69, max_depth= 4, min_child_weight= 20, subsample= 0.8, colsample_bytree=0.8 ,random_state=42)
forest_Min.fit(X_train, Y_Min_train)
Y_Max_pred=forest_Max.predict(X_test)
Y_Min_pred=forest_Min.predict(X_test)

print("MaxTemp pred r2score",r2_score(Y_Max_test, Y_Max_pred))
print("MinTemp pred r2score",r2_score(Y_Min_test, Y_Min_pred))
 
MaxTemp pred r2score 0.8435216030218544
MinTemp pred r2score 0.9553404953510781
In [11]:
result=pd.DataFrame([Y_Max_pred,Y_Min_pred],index=["MaxTemp_pred","MinTemp_pred"]).T
result.index=X[-len(X_test):].index
result["MaxTemp_act"]=Y_Max_test
result["MinTemp_act"]=Y_Min_test
 

結果を整理。

In [12]:
result.plot(figsize=(16,6))
Out[12]:
<matplotlib.axes._subplots.AxesSubplot at 0x21075c0fbe0>
 
 

XX_predが予測値、XX_actが実測値です。

前回と比べると…良くなったのか…なぁ?スコアは良くなってますけどね。。
1/27の気温を題材に、実際に比較してみましょう。

 

前回との比較ということで、1/26のデータから1/27の予測を行ってみます。

In [13]:
df_pred=pd.DataFrame()
dfp=pd.read_csv("data2.csv",encoding="shiftjis",header=3).drop([0,1],axis=0).reset_index(drop=True)
df_pred["datetime"]=pd.to_datetime(dfp["年月日"])
df_pred["Max_temp"]=dfp["最高気温(℃)"]
df_pred["Min_temp"]=dfp["最低気温(℃)"]
df_pred=df_pred.set_index("datetime",drop=True)

df_pred=week_dataset(df_pred)

pred=pd.DataFrame()
pred["datetime"]=pd.to_datetime(["2019-01-27"])
pred.index=pred.datetime
pred=pred.drop("datetime",axis=1)

pred["Max -1"]=df_pred.iloc[-1]["Max_temp"]       
pred["Min -1"]=df_pred.iloc[-1]["Min_temp"]
                          
for i in range(2,8):
    pred["Max -"+str(i)]=df_pred.iloc[-1]["Max -"+str(i-1)]
    pred["Min -"+str(i)]=df_pred.iloc[-1]["Min -"+str(i-1)]

Y_Max_pred=forest_Max.predict(pred)
Y_Min_pred=forest_Min.predict(pred)
In [14]:
print("Max temp",Y_Max_pred)
print("Min temp",Y_Min_pred)
 
Max temp [9.09020509]
Min temp [-1.41623157]
 

さて、予測したところ、1/27の最高気温は9.09度、最低気温は-1.41度のようです。

実際の1/27は最高気温10.2度、最低気温-1.5度だったようです。
前の結果を確認してみましょう。

>Max temp [11.14383333]
>Min temp [-1.28191667]

最低気温はだいぶ近づきましたね。最高気温は精度変わらずくらいです。上振れか下振れかの違いです。 でもこれでもGoogleに表示される天気予報と同じくらいに当てられています。(この日に限りですが)
このスクリプトは1時間かからないくらいで作成できたので、そのくらいのコストでこの精度ならかなり良いような気がしますね。

これから言えることは、おそらくこの程度の誤差が勾配Boostingによる数値ベース予想の限界ってことですね。(XGBとかCatBoostを使ってアンサンブルしても目に見えて精度が向上しそうにない)
気象予報士とかは雲の形とか太陽の活動度とか使って予想をしているそうなので、そういうデータを適切に追加すれば、もっと精度の良い予想ができそうです。

機械学習を使って明日の気温を予測してみる

 

 

 

 

機械学習で明日の気温をざっくり予想できたら面白そうだなと思って ちょっと作ってみました。

アンサンブルとかディープとかそういうのは一切ないです。

自分の備忘録も兼ねて。

 

In [1]:
#import
import numpy as np
import pandas as pd
import os
import csv
import datetime
import matplotlib.pyplot as plt
%matplotlib inline


from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import make_scorer
from sklearn.metrics import r2_score
 

天候データは気象庁からダウンロードしましょう https://www.data.jma.go.jp/gmd/risk/obsdl/index.php

In [2]:
#データを読む
os.chdir("~/data")

df=pd.DataFrame()
df_org=pd.read_csv("data.csv",encoding="shiftjis",header=2).drop([0,1],axis=0).reset_index(drop=True)
df["datetime"]=pd.to_datetime(df_org["年月日"])
df["Max_temp"]=df_org["最高気温(℃)"]
df["Min_temp"]=df_org["最低気温(℃)"]
df=df.set_index("datetime",drop=True)
 

過去一週間の気温の推移をざっくりとDataFrameにぶちこみます

In [3]:
def week_dataset(df):
    tmp=np.zeros((2,8,len(df)))
    for i in range(1,8):
        for j in range(len(df)):
            tmp[0][i][j]=df.Max_temp.iloc[j-i]
            tmp[1][i][j]=df.Min_temp.iloc[j-i]
        df[str("Max -")+str(i)]=tmp[0][i]
        df[str("Min -")+str(i)]=tmp[1][i]
    return df
        
df=week_dataset(df)
        
df.head()
Out[3]:
 
  Max_temp Min_temp Max -1 Min -1 Max -2 Min -2 Max -3 Min -3 Max -4 Min -4 Max -5 Min -5 Max -6 Min -6 Max -7 Min -7
datetime                                
2011-01-01 10.7 -3.0 5.6 0.2 11.6 0.1 10.3 -2.3 9.5 -3.9 9.2 -1.3 13.9 0.9 15.6 4.5
2011-01-02 11.4 -0.6 10.7 -3.0 5.6 0.2 11.6 0.1 10.3 -2.3 9.5 -3.9 9.2 -1.3 13.9 0.9
2011-01-03 9.3 -1.0 11.4 -0.6 10.7 -3.0 5.6 0.2 11.6 0.1 10.3 -2.3 9.5 -3.9 9.2 -1.3
2011-01-04 10.0 0.0 9.3 -1.0 11.4 -0.6 10.7 -3.0 5.6 0.2 11.6 0.1 10.3 -2.3 9.5 -3.9
2011-01-05 11.1 -2.6 10.0 0.0 9.3 -1.0 11.4 -0.6 10.7 -3.0 5.6 0.2 11.6 0.1 10.3 -2.3
 

Max-1というのは、一日前の最高気温を表します。 Min-6だったら、6日前の最低気温を表しています。

In [4]:
X=df.drop(["Max_temp","Min_temp"],axis=1)
Y_Max=df["Max_temp"]
Y_Min=df["Min_temp"]

X_train=X[:-365]
X_test=X[-365:]
Y_Max_train=Y_Max[:-365]
Y_Max_test=Y_Max[-365:]
Y_Min_train=Y_Min[:-365]
Y_Min_test=Y_Min[-365:]

X_train.head()
Out[4]:
 
  Max -1 Min -1 Max -2 Min -2 Max -3 Min -3 Max -4 Min -4 Max -5 Min -5 Max -6 Min -6 Max -7 Min -7
datetime                            
2011-01-01 5.6 0.2 11.6 0.1 10.3 -2.3 9.5 -3.9 9.2 -1.3 13.9 0.9 15.6 4.5
2011-01-02 10.7 -3.0 5.6 0.2 11.6 0.1 10.3 -2.3 9.5 -3.9 9.2 -1.3 13.9 0.9
2011-01-03 11.4 -0.6 10.7 -3.0 5.6 0.2 11.6 0.1 10.3 -2.3 9.5 -3.9 9.2 -1.3
2011-01-04 9.3 -1.0 11.4 -0.6 10.7 -3.0 5.6 0.2 11.6 0.1 10.3 -2.3 9.5 -3.9
2011-01-05 10.0 0.0 9.3 -1.0 11.4 -0.6 10.7 -3.0 5.6 0.2 11.6 0.1 10.3 -2.3
 

XとYに分けます。Yには当日の最低気温と最高気温をそれぞれ切り出します。

Xには一日前までの時点での7日間の気温の推移が詰まりますね。

In [5]:
forest_Max = RandomForestRegressor(min_samples_leaf=3, random_state=0)
forest_Max.fit(X_train, Y_Max_train)
forest_Min = RandomForestRegressor(min_samples_leaf=3, random_state=0)
forest_Min.fit(X_train, Y_Min_train)
Out[5]:
RandomForestRegressor(bootstrap=True, criterion='mse', max_depth=None,
           max_features='auto', max_leaf_nodes=None,
           min_impurity_decrease=0.0, min_impurity_split=None,
           min_samples_leaf=3, min_samples_split=2,
           min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=1,
           oob_score=False, random_state=0, verbose=0, warm_start=False)
 

お手軽神ツールRandomForestRegressorを使ってモデルを作ります

In [6]:
print("MaxTemp score",forest_Max.score(X_train, Y_Max_train))
print("MinTemp score",forest_Min.score(X_train, Y_Min_train))
 
MaxTemp score 0.9573943473669106
MinTemp score 0.9837380953120993
 

モデルのフィッティングスコアを見てみると最高気温が0.95で最低気温が0.98です。おおむね満足な数値と言えましょう。

最高気温より最低気温のほうが表現しやすいようですね。だから何かってわけではないですが。

In [7]:
Y_Max_pred=forest_Max.predict(X_test)
Y_Min_pred=forest_Min.predict(X_test)
 

お手軽神ツールRandomForestRegressorで予想します。

In [8]:
result=pd.DataFrame([Y_Max_pred,Y_Min_pred],index=["MaxTemp_pred","MinTemp_pred"]).T
result.index=X_test.index
result["MaxTemp_act"]=Y_Max_test
result["MinTemp_act"]=Y_Min_test
 

結果を整理。

In [9]:
result.plot(figsize=(16,6))
Out[9]:
<matplotlib.axes._subplots.AxesSubplot at 0x1e899802400>
 
 

XX_predが予測値、XX_actが実測値です。

一日前のデータから翌日の気温を予測するのは、結構いい感じに行けそうですね。

In [10]:
print("MaxTemp pred r2score",r2_score(Y_Max_test, Y_Max_pred))
print("MinTemp pred r2score",r2_score(Y_Min_test, Y_Min_pred))
 
MaxTemp pred r2score 0.8336991228198057
MinTemp pred r2score 0.9558456419510862
 

決定係数を使って精度を見ると、最高気温は0.83で最低気温は0.95でした。

最高気温は結構幅があるので外しやすいんでしょうかね。

 

じゃあ次、明日を予測してみましょう。

気象庁のサイトから直近のデータを持ってきます。

1/26までしかなかったので、このデータから本日1/27の予測を行ってみます。

これで結果が妥当かどうか見てみます。

In [11]:
df_pred=pd.DataFrame()
dfp=pd.read_csv("data2.csv",encoding="shiftjis",header=3).drop([0,1],axis=0).reset_index(drop=True)
df_pred["datetime"]=pd.to_datetime(dfp["年月日"])
df_pred["Max_temp"]=dfp["最高気温(℃)"]
df_pred["Min_temp"]=dfp["最低気温(℃)"]
df_pred=df_pred.set_index("datetime",drop=True)
 

DataFrameを作ります

In [12]:
df_pred=week_dataset(df_pred)
df_pred.iloc[-1:]
Out[12]:
 
  Max_temp Min_temp Max -1 Min -1 Max -2 Min -2 Max -3 Min -3 Max -4 Min -4 Max -5 Min -5 Max -6 Min -6 Max -7 Min -7
datetime                                
2019-01-26 9.4 -1.0 9.4 -1.8 10.6 2.5 11.6 -2.1 10.7 -3.3 10.3 -1.3 12.5 -1.6 11.8 -1.3
 

26日までしかないので、今日のデータを作ってあげる必要があります。

In [13]:
pred=pd.DataFrame()
pred["datetime"]=pd.to_datetime(["2019-01-27"])
pred.index=pred.datetime
pred=pred.drop("datetime",axis=1)

pred["Max -1"]=df_pred.iloc[-1]["Max_temp"]       
pred["Min -1"]=df_pred.iloc[-1]["Min_temp"]
                          
for i in range(2,8):
    pred["Max -"+str(i)]=df_pred.iloc[-1]["Max -"+str(i-1)]
    pred["Min -"+str(i)]=df_pred.iloc[-1]["Min -"+str(i-1)]
In [14]:
pred
Out[14]:
 
  Max -1 Min -1 Max -2 Min -2 Max -3 Min -3 Max -4 Min -4 Max -5 Min -5 Max -6 Min -6 Max -7 Min -7
datetime                            
2019-01-27 9.4 -1.0 9.4 -1.8 10.6 2.5 11.6 -2.1 10.7 -3.3 10.3 -1.3 12.5 -1.6
 

今日のXができました。

In [15]:
Y_Max_pred=forest_Max.predict(pred)
Y_Min_pred=forest_Min.predict(pred)
In [16]:
print("Max temp",Y_Max_pred)
print("Min temp",Y_Min_pred)
 
Max temp [11.14383333]
Min temp [-1.28191667]
 

さて、予測したところ、1/27の最高気温は11.1度、最低気温は-1.3度のようです。

使用した地点は府中市なので、この天気予報を参照すると・・・

 

f:id:Narow613:20190127174921p:plain

最高気温はピタリ賞です。

ただ、最低気温が1度ほどずれていますね。うーん惜しい。

 

 

以上、予測してみたコーナーでした。

Pythonによるスパイキングニューラルネットワークの実装

スパイキングニューラルネットワーク(Spiking Neural Network、以下SNN)について、最近注目度が上がっているらしい。
Pythonで組んでみている人は少なそうなので、備忘録も兼ねてとりあえず組んでみた。


理論は下記の記事が大変細かく説明しているので紹介。

nonatonic.hatenablog.com

 
今回はIzhkevichモデルを使ってPythonで組んでみる。
使うのはnumpyだけで、ただ微分方程式を解いているだけだが、なかなか面白い結果が得られた。


まずは1ニューロンの場合。

import numpy as np
import matplotlib.pyplot as plt

## izhikevich法による計算
def dv(v,u,inp):
    v= 0.04*v*v +5*v +140 -u+inp
    return v/20
    # 20は時定数

def du(v,u):
    a=0.02
    b=0.2
    u=a+(b*v-u)
    return u

def runge(v,u,inp):
    kv1 = dv(v,u, inp);
    ku1 = du(v,u);
    kv2 = dv(v+kv1*0.5,u+ku1*0.5, inp);
    ku2 = du(v+kv1*0.5,u+ku1*0.5);
    kv3 = dv(v+kv2*0.5,u+ku2*0.5, inp);
    ku3 = du(v+kv2*0.5,u+ku2*0.5);
    kv4 = dv(v+kv3, u+ku3, inp);
    ku4 = du(v+kv3, u+ku3);
    v = v + (kv1 + 2.0*kv2 + 2.0*kv3 + kv4)/6.0;
    u = u + (ku1 + 2.0*ku2 + 2.0*ku3 + ku4)/6.0;
    return v,u

inp = 10 #入力電流
v = -65.0 #初期膜電位
u = 5.0 #初期値
sv = []
su = []

#t=1000まで回してみる
for t in range (0,1000):
    v,u=runge(v,u,inp)
    if v > 30:
        v = -65
        u = u+2
    sv.append(v)
    su.append(u)

plt.plot(sv)
plt.show()
plt.plot(su)
plt.show()

 
f:id:Narow613:20180729164603p:plain
f:id:Narow613:20180729164804p:plain

Vが発火してるタイミングから少し遅れてUも上昇しており、Uの影響によってVの発火が抑えられている。
ふむ。問題なさそうだ。

では次にネットワークにしてみる。
ネットワークのニューロンはとりあえず3個。何か一つが発火したとき、隣のニューロンへ興奮信号を送るケースを考える。

import numpy as np
import matplotlib.pyplot as plt

## izhikevich法による計算
def dv(v,u,inp):
    v= 0.04*v*v +5*v +140 -u+inp
    return v/20
    # 20は時定数

def du(v,u):
    a=0.02
    b=0.2
    u=a+(b*v-u)
    return u

#結合入力計算
def ds(s,a):
    return (-s+a)/10
    # 10は時定数

def runge(v,u,inp):
    kv1 = dv(v,u, inp);
    ku1 = du(v,u);
    kv2 = dv(v+kv1*0.5,u+ku1*0.5, inp);
    ku2 = du(v+kv1*0.5,u+ku1*0.5);
    kv3 = dv(v+kv2*0.5,u+ku2*0.5, inp);
    ku3 = du(v+kv2*0.5,u+ku2*0.5);
    kv4 = dv(v+kv3, u+ku3, inp);
    ku4 = du(v+kv3, u+ku3);
    v = v + (kv1 + 2.0*kv2 + 2.0*kv3 + kv4)/6.0;
    u = u + (ku1 + 2.0*ku2 + 2.0*ku3 + ku4)/6.0;
    return v,u

inp = [10,10,10] #入力電流
v = [-65.0,-65.0,-65.0] #初期膜電位
u = [5.0,5.0,5.0] #初期値
s = np.zeros(3)
sv = np.zeros((1000,3))
su = np.zeros((1000,3))
ss = np.zeros((1000,3))
print(v)

#t=1000まで回してみる
for t in range (0,1000):
    for n in range (0,3):
        v[n],u[n]=runge(v[n],u[n],inp[n])
        if v[n]> 30:
            v[n] = -65
            u[n] = u[n]+2
            s[n] = ds(s[n],5)
            #発火したときに強度5のシナプス信号を送信
        else:
            s = ds(s,0)
        inp[n] = inp[n] + s[n-1]
        #隣のニューロンにシナプス入力を反映
        sv[t]=v
        su[t]=u

plt.title("V")
plt.xlabel("time")
plt.ylabel("mV")
plt.plot(sv)
plt.show()
plt.title("U")
plt.xlabel("time")
plt.ylabel("Activity")
plt.plot(su)
plt.show()

f:id:Narow613:20180729173317p:plain
f:id:Narow613:20180729173325p:plain

結合の効果によって、3つのニューロンの発火タイミングがずれ込む様子を確認できる。
結合がなければすべてのニューロンが冒頭で出したようなスパイクを示すが、今回の結果は全体的に冒頭のケースよりも発火間隔が短くなっているのがわかるだろうか。
3つのニューロンがお互いに発火したとき、その興奮信号を受け取っているので当然ではあるが、こうしてグラフにしてみるとなかなか単純な話ではなさそう。

逆に、興奮ではなく抑制信号を送るように書いてみよう。

            s[n] = ds(s[n],5)
            #発火したときに強度5のシナプス信号を送信

この部分を5から-5に書き換えてやればよい。
結果は次のようになる。

f:id:Narow613:20180729174045p:plain
f:id:Narow613:20180729174053p:plain

興奮のときと比較すると、発火間隔は長くなっていることがわかる。
前は11回ほど発火していたが、抑制のときは9回くらいになっている。

入力はすべてのニューロンに定常的にただ10(mV)を入れているだけだが、ネットワークの作りだけでここまで差が出る。
ニューロンに入る入力が全て異なる場合や、ニューロンの数が増えた場合にどうなるかは、実際に試してみていただければ。

また、今回は膜電位Vの動きをそのまますべてプロットしたが、ニューロンの数が増えると線が増えすぎて非常に見にくくなる。
こういったものを解決するために、神経科学の領域ではラスタープロット表記やインタースパイク・インターバル表記などが用いられている。




さて、SNNを遊び程度にとりあえず組んでみたが、これがどのように社会の中で活用していくかは正直研究者でも手探りな部分が多いらしい。
ディープラーニングなどで使われているCNNなどに比べて計算量が多すぎるという欠点があり、まだまだこれからの技術といえる。

しかし、SNNはCNNと比べて表現できる情報量が桁違いに多いというのはグラフを見ればよく分かると思う。
発火間隔の長さ・短さはもとより、基底状態の長さや発火にかかる時間など、0と1だけでは表現できないことが多く含まれている。
「十分な入力はあったが、直前まで基底状態だったため発火しなかった」
「入力は不足しているが、それまで頻繁に入力を受けていたため発火できた」
というケースもある。
ディープラーニング等CNNでは、確率が0.4から0.6程度のデータの取扱いに苦心していると聞くが、SNNであればそういった部分にも解を出すことができるのではないかと考えている。

SNNの研究は昔から行われており、理論上の体系はもう既に組み上がっている。だが、これまではその計算を行えるマシンがなく、まさに「机上の空論」だった。
しかしながら、近年コンピュータのスペック向上が目覚ましく、机上の空論ではなくなりつつある。その一例として、今まさにスーパーコンピュータを用いてSNNでコンピュータ上に脳の全てを再現しようという試みが行われている。
www.hpcwire.jp

大変夢がある。量子コンピュータが完成したならば、SF世界にあるような人型AIというのも実現可能性が出てくるのではないかと考えている。

夢は大きいが、結局のところ、こうしてSNNから得られた数値にどういった意味があり、どのように活用できるかがわからなければ何も始まらない。
これを打ち立てられたらブレークスルーが起きるだろう。いつどこからこういったニュースが現れるか楽しみにしたい。

バンドリ!に出演するキャラが持つ楽器

こんにちは。

唐突ですが、皆さんはバンドリを御存知でしょうか。今回はバンドリのキャラが持つ楽器についての記事です。

 

bang-dream.com

 

さまざまな特徴を持つJKJCたちがバンドを通じて自分を表現したり衝突したりゆるふわするコンテンツです。

ブシロードが今もっとも力を入れているタイトルの一つで、アニメやスマホゲー、演者によるライブなどのコンテンツが展開されています。

演者によるライブは声優ものとしては珍しく、キャラクターのキャストが実際のギターやベースを使って生演奏します。

というわけですから、キャラクターの持つ楽器は無論実在のモデルなのです。

 

今回は、そのキャラたちが持っている楽器について調べたものを書きました。

どれもキャラのイメージ通りの特徴を持っているので、ぜひ楽器の魅力にも触れてください。

 

  • Poppin Party

f:id:Narow613:20180121231720p:plain

 

  • 戸山香澄

ESP RANDOMSTAR Kasumi -LED- ESP×バンドリ! ランダムスター 戸山香澄モデル エレキギター BanG Dream! 【LED搭載モデル】 【受注生産 納期7ヶ月程度 ※注文後のキャンセル不可】

ESP RANDOMSTAR Kasumi

ESP RANDOMSTAR Kasumi -LED- ESP×バンドリ! ランダムスター 戸山香澄モデル エレキギター BanG Dream! 【LED搭載モデル】 【受注生産 納期7ヶ月程度 ※注文後のキャンセル不可】 | 島村楽器オンラインストア

 

頭ランダムスターこと香澄ちゃんのギターです。エクスプローラー型の一種、ランダムスタータイプのギターです。メーカーはESP。

タイプってもほとんどアーティスト専用みたいなワンオフ変態モデルですけど。高校生が持つギターじゃないよ。

ハムバッカーピックアップを搭載していて、パワフルで押しが強いサウンドが特徴のようです。

 

廉価版も出てるようです。

ピックアップが違うので音は劣化するでしょうが、気分を味わうならこっちですかね。

BanG Dream! RANDOMSTAR Kasumi ESP×バンドリ! ランダムスター 戸山香澄モデル エレキギター 【バンドリ】 | 島村楽器オンラインストア

 

 

  • 花園たえ

ESP SNAPPER Tae ESP×バンドリ! スナッパー 花園たえモデル エレキギター BanG Dream! 【受注生産 納期7ヶ月程度 ※注文後のキャンセル不可】

ESP SNAPPER Tae ESP×バンドリ! スナッパー 花園たえモデル エレキギター BanG Dream! 【受注生産 納期7ヶ月程度 ※注文後のキャンセル不可】 | 島村楽器オンラインストア

おたえはESPのオリジナルシリーズ、スナッパーです。ストラトタイプ。

ピックアップがひと味違います。

 

f:id:Narow613:20180121233139p:plain

ギターは複数積んであるピックアップを切り替えることで、様々な音をだすことができるんですが、この画像の通り組み合わせを変えることで普通のストラトには出せない音が出せるらしいです。テクニカルですね。

この変態め。

 

これも廉価版あり。スナッパーモデルに見せかけたストラトですね。高校生が使うならこれでも十分だと思うんですけど。

てかバンドリモデルは全部廉価版あるので以下略します。しまむら楽器で探してね。

BanG Dream! SNAPPER Tae ESP×バンドリ! スナッパー 花園たえモデル エレキギター 【バンドリ】 | 島村楽器オンラインストア

 

  • 牛込りみ

ESP VIPER BASS Rimi ESP×バンドリ! ヴァイパーベース 牛込りみモデル ベース BanG Dream! 【受注生産 納期7ヶ月程度 ※注文後のキャンセル不可】

ESP VIPER BASS Rimi ESP×バンドリ! ヴァイパーベース 牛込りみモデル ベース BanG Dream! 【受注生産 納期7ヶ月程度 ※注文後のキャンセル不可】 | 島村楽器オンラインストア

りみりんはヴァイパーベースです。メーカーはESP。どうしてこう普通のモデルにしないんでしょうか。

SGみたいな形をしたベースです。ボディの重量バランスが良好で取り回しやすいとのこと。

Bass/Trebleをツマミで調節でき、演奏性と音の幅が高いところでまとまってますね。

 

 

「afterglow バンドリ」の画像検索結果

  • 美竹蘭

f:id:Narow613:20180918204324p:plain

(※)コメントで指摘いただきました。レスポールスペシャルの赤が正しそうです。

このピックガードを外して蘭と同じ見た目です。ちょっとのカスタムで個性感を出していくという。

蘭らしいですね。

 

この記事見てイキリミタケギター買った人いたらごめんなさい。

僕もイキリミタケギターだと思って↓買ったので許してください。

Gibson USA / Les Paul Standard 2014 Brilliant Red (BR) ギブソン【アウトレット大特価品】 | イシバシ楽器店

バンドリのあやねることイキリミタケさんは真っ赤なレスポールです。メーカーはGibson

ポッピンパーティやロゼリアの面子の楽器は頭おかしい値段してますが、これなら高校生が数ヶ月バイトすれば買えるくらいですね。

Gibsonレスポールはギターの金字塔の一つです。ロックを志す人なら必ず一度は通る道(だと思います)。

ハムバッカーによる情熱的なパワフル&パワフルのサウンドが特徴です。

 

 

 

Schecter / BH-1-STD-24-M Deep Blue (DBL) エレキギター【お取り寄せ商品】 | イシバシ楽器店

 蘭の相棒ことモカはSchecterのストラトです。あまり日本では馴染みないかもしれませんが、れっきとしたGibsonのライバルです。

 スタンダードで優等生なFenderと違い、パーツがどれも一癖あってストラトという枠組みで見ると「変わり者」なギターです。モカらしいと思います。

赤のレスポールと青のストラトって組み合わせは良いですね。 カラーも購入時に蘭と示し合わせたんでしょうか。

 

  • 上原ひまり

ひまりさんはジャズベース、Fenderの’64 ヴィンテージモデルです。多分。ちょっと不確か。

音色がとても柔らかい売りのモデルみたいです。あと乗ってるパーツがいろいろでかい。

ボディが窮屈ですね。はみでそう。

 

  • Pastel*Paletts

好きです。

  • 丸山彩

推しです。 

関連画像まん丸お山に彩りを!丸山彩で~す♪

 

 

  • 氷川日菜

ゴメンナサイ、ちょっとピンポイントなのはわからなかったです。

なのでこれっぽい?と思ったやつを。

f:id:Narow613:20180121235906p:plain

Ibanez / Prestige Series RG657K-KB Koa Brown アイバニーズ【日本製】【御茶ノ水本店】 | イシバシ楽器店

Ibanezストラトです。ピックガードなし。

ブルーのカラーリングあるかなと思ったんですが、扱ってるショップが見つかりませんでした。残念。

 

個人的には日菜はテレキャスタイプのイメージが強いです。実際イラストによってはテレキャス握ってますね。

テレキャスターエレキギターで最も古いモデルで、これをベースに軽くて弾きやすいストラトレスポールが生まれていきました。

それゆえに、とても幅広い音が出せます。代わりに非常に高い演奏技術が要求されます。

天才肌の日菜には似合うんじゃないでしょうか。

 

フェンダープレベです。ピックガードなし。

比較的珍しいモデルのようで、国内での取扱は少なかったです。

このタイプはプレベジャズベの両方の特徴を備えていて、二面性のベースといえます。

純白のカラーも含めて白鷺千聖の分かれ身って感じがしますね。しませんか?

しないですかね。はい。

 

  • Rosellia

関連画像

  • 氷川紗夜

ESP M-II ROSELIA SAYO ESP×バンドリ! ロゼリア 氷川紗夜モデル エレキギター BanG Dream! 【受注生産 納期7ヶ月程度 ※注文後のキャンセル不可】【予約受付中:2018年01月発売予定】

ESP M-II ROSELIA SAYO ESP×バンドリ! ロゼリア 氷川紗夜モデル エレキギター BanG Dream! 【受注生産 納期7ヶ月程度 ※注文後のキャンセル不可】【予約受付中:2018年01月発売予定】 | 島村楽器オンラインストア

氷川姉はESPのM2です。ストラトタイプ。贅沢やなオイ。

ESPはギター界でいうポルシェ、フェラーリみたいな立ち位置です。大盤振る舞いやんけ。金あんなこいつら。すみません愚痴が出ました。

紗夜のモデルはストラトなんですが、おたえと違いトレモロアームはついてません。まぁ確かにトレモロ好きじゃなさそう。不器用だし(?)。

ヘヴィ・ロックに向く、狂犬のようなゴリッゴリな音が特徴です。

 

  • 今井リサ

ESP BTL ROSELIA LISA ESP×バンドリ! ロゼリア 今井リサモデル ベース BanG Dream! 【受注生産 納期7ヶ月程度 ※注文後のキャンセル不可】【予約受付中:2018年01月発売予定】

ESP BTL ROSELIA LISA ESP×バンドリ! ロゼリア 今井リサモデル ベース BanG Dream! 【受注生産 納期7ヶ月程度 ※注文後のキャンセル不可】【予約受付中:2018年01月発売予定】 | 島村楽器オンラインストア

リサ姉もESPです。ボトムラインというモデルですね。

5つのツマミでボリュームとBass/Middle/Treble、ピックアップバランサーが調節できるとてもテクニカルな感じですね。

このおかげでロックでもブルースでもジャズでもどんなシーンにも合わせることができます。おっ君コミュ力高いね~

でも初心者が買うモデルじゃないというのは間違いない。ユッキーナにオススメされたんでしょうか。

 

 

「ハローハッピーワールド」の画像検索結果

 

  • 瀬田薫

Gretsch / FSR Limited G6136DC White Falcon Double Cutaway グレッチ【S/N JT17051519】【渋谷店】 | イシバシ楽器店

瀬田さんは純白のエレアコです。メーカーはGretsch。高貴な感じ出てていいですね~

グレッチのエレアコは、世間ではメンテが難しく綺麗な音を出すのが難しいと言われます。

ただ、それでこそ表現できるフレーズがあるとか。薫らしいですね。

 

  • 北沢はぐみ

f:id:Narow613:20180918204952p:plain

 

 はぐみはリッケンバッカーです。なんだかごちゃっとした見た目ですね。

リッケンバッカーのベースは、とても引きづらいと言われてるみたいですが、独特の音作りによって「これでしか出せない」表現をすることが可能になるそうです。

掴みどころがないというわけではなく、全力で掴み続けて初めてモノになるタイプとか、そんな感じでしょうか。

 

 

 

  • おわりに

ただのオタクが調べてみただけなので、実は間違ってるよってパターンがあるかもしれません。

バンドリオタクが楽器欲しくなったときの覚書程度になればと。ちなみに筆者は千聖ベースを欲しがっています。

あと、本記事のモデル使ってるユーザがいたとしても(バンドリモデルはともかく)この楽器持ってたからバンドリファンってことはないと思うので、心のなかでテンション上げる程度にしましょう。

 

現状ポッピンパーティとロゼリアだけですが、他のコラボモデルが今後普通に出るかもしれないので購入は計画的に。

 

 

(※)リンク切れ等一部訂正しました

Honda PCX125 契約しました

今回はバイクの話です。

大学生活で忙しい部分は超えたので、何か新しく趣味になるものを始めよう。と思いたち、予てより興味があったバイクに手を出してみたいなという欲がありました。

そんな最中、バイクに関係する映画とか漫画を読んでるうちにどんどんボルテージが上がってきてしまい、結果購入まで走ることに。

 

f:id:Narow613:20170827111724j:plainf:id:Narow613:20170827115444p:plain

 

とりあえず免許を取って(小型二種だったので2週間・6万強で取得できました)どのバイクを買おうかな~と思ったとき、当初3つほど候補がありました。

試乗せずカタログ見ただけですが、簡単に所感と決め手を覚え書きします。

 

一つ目はHonda・PCX

「PCX」の画像検索結果

・大きめの車体、大きめのタイヤ

・高燃費(リッター50km強)

・シャープな見た目

・スピードが出やすい(初速で出遅れない)

・125ccの人気首位

・33万~

 

シャープな見た目で非常に惹かれた車体です。

「125cc おすすめ」とか検索すると間違いなく上位に出るほど人気がある車種のようです。125ccと言いつつ250ccに迫る加速性能を持つとか。

長所はその走行性能と見た目、弱点はメットインの微妙なサイズと大きさから来る駐輪スペースの確保です。

 

 

二つ目はYAMAHAアクシスZ

「アクシスZ」の画像検索結果

・コンパクトなサイズ感、軽さ(100kg)

・高燃費(リッター55km)

・街乗りに最適化された走行感

・2017年発の新定番モデル

・23万~

 

ヤマハの125cc新定番モデルの車体です。特筆すべきはそのサイズ感と軽さ。

乗り心地に関して随所に意匠があるようで、長距離乗っても疲れないのが売りらしいです。価格も低めでコスパ良。

調べているときに「SEの人が乗ってそうな車体」とか言われていたのが印象深い。

長所は安さとサイズ、短所は驚くことにほぼ無し。非常に完成度が高いスクーターのようです。

個人的にはタイヤが10インチなのがちょっとマイナス。

 

 

三つ目はHonda・スーパーカブ110

f:id:Narow613:20170827113848p:plain

・国内バイク市場最大知名度のカブ

・超燃費(リッター60km強)

・脅威のカスタムラインナップ

・超耐久

 

おなじみカブです。一見MTに見えて区分はATスクーターと同じというよくわからないバイク。変速があってもクラッチがないからATらしいです。なんじゃそら

特筆点はその燃費と耐久、カスタムの幅。日本どころか世界で一番乗られているバイクだけあって、ママチャリのようなカゴから本格的な改造まで千差万別のカスタムラインナップがあります。

また耐久についても申し分なし。ゲームキューブと比べられるレベルの逸話がたくさんあるようです。

その人気たるや、カブ専門の雑誌まで作られるほど。

カブonly vol.3

欠点はシート下の収納がない点ですかね。それ以外はほぼ無いと思います。

 

 

 

という3つで検討して、今回はPCXに決定しました。

決め手で一番大きなウェイトを占めたのは見た目でした。

あとは、やはり人気車種だけあってネット上の「PCXでツーリングしてきました!」といった記事に惹かれたというのもあります。

 

というわけで現在納車待ちです。たのしみ。