見出し画像

今週の「学び」と「アウトプット」と「考えたこと」


生成Deep Learningのコードを眺めた(9/4

著者のgithubに書籍にあるコードが書かれているのだけど、実際にトレーニングするためのコードがシンプルに書かれている。あまり数式はないので比較的読みやすい。きっと、以前よりは深く入っていけたと思う。まあ、使う上で困ってきたから読んでいるのだけどね。時間の関係で必要だと思う範囲まででいい

どんなに難しい話をしても、アウトプットがユーザーにとって期待した結果にならなければ、いくら指標を用意して比較したところで、そのユーザーにとっては残念な結果でしかなく、そこに価値はない

どうしても開発をしていると、開発に集中しているのでユーザーのことを忘れることがしばしばある。研究も似たようなものなのではないか

それを踏まえると、本書は比較的、ライトに書かれているため素人にとっては読みやすい方だと思う。今まで試してきたFineTuningやLoRAなどの経験から、似たようなコードやプロパティがあったことも大きいと思う

ライブラリはnumpyやmatplotlibからスタートしてくれるので、比較的、クラシックにスタートしてくれていると思う。本を読むのが大変な人は、先にコードを見た方が飲み込みやすいかもしれない

何で、このコードはこうしているのか?という疑問が出て、はじめてテキストで理由や目的を探してもいいかもだ

クリップチューナーの電池が切れた。ペダル式のチューナーの方がいいのだろうか?(9/5)

アコギなど電気信号を必要としない楽器のときにチューニングしにくいので、無理に揃えなくていいかと思い直して見送り

GeminiがPDFを読み込める件について

GeminiがPDFを読み込めるということで期待したのだが、要はPDFをテキスト化して読み込むというものだった(ローカルの場合)メタデータを読み込む処理も書いてあったが、何のことだが・・・。特別、真新しいことではないかと

Gemini API は、渡された PDF ドキュメントを処理して実行できます。日時 PDF がアップロードされた場合、Gemini API は次のことを行えます。

- コンテンツについて説明または回答する
- コンテンツを要約する
- コンテンツから推定する

このチュートリアルでは、Gemini API にプロンプトを送信する方法をいくつか紹介します。 添付されていますすべての出力はテキストのみです。

ただし、事前に用意したローカルデータを元に回答させるという考え方はよい。事前にフルでデータを与えて行動させるということだ

実装

とりあえず、要約させる


"""
要するにテキストで読み込ませろってことだな
"""

import google.generativeai as genai
import os
import pathlib

# 環境変数をセットする
genai.configure(api_key=os.environ["Gemini_API_KEY"])

# Geminiのロード
model_name="gemini-1.5-flash"
model = genai.GenerativeModel(model_name=model_name)

import pypdf

def extract_text_from_pdf(pdf_path):
    with open(pdf_path, 'rb') as pdf_file:
        pdf_reader = pypdf.PdfReader(pdf_file)
        extracted_text = ""
        for page in pdf_reader.pages:
            text = page.extract_text()
            if text:
                extracted_text += text
        return extracted_text

# 論文の内容をテキスト化する
sample_file_2 = extract_text_from_pdf('2408.06070v2.pdf')
#print(sample_file_2)

#prompt = "Summarize the differences between the thesis statements for these documents."
prompt = "論文の内容を日本語で要約して"
#response = model.generate_content([prompt, sample_file, sample_file_2, sample_file_3])
response = model.generate_content([prompt, sample_file_2])

print(response.text)

回答

## 論文「ControlNeXt: Powerful and Efficient Control for Image and Video Generation」要約

この論文は、**ControlNeXt**と呼ばれる、画像およびビデオ生成のための強力で効率的な制御手法を提案しています。 ControlNeXt は、生成結果に対するより良い制御を実現するために、ベースモデルにわずかな追加コストで、既存の手法(ControlNet、Adapters、ReferenceNetなど)に比べてより単純で効率的なアーキテクチャを採用しています。

ControlNeXtの主な特徴は下記の通りです。

**1. 効率的なアーキテクチャ:**

* ベースモデルのアーキテクチャをほとんど維持し、追加の並列ブランチを削除。これにより、処理時間とメモリ使用量が大幅に削減されます。
* ベースモデルのパラメータの一部のみを調整することで、追加のパラメータを導入することなく、コントロール機能を学習します。

**2. クロス正規化 (CN):**

* 従来の「ゼロ畳み込み」に代わる手法として、CNを導入。CNは、事前学習済みモデルに新しいパラメータを追加する際に、データの分布を揃えることで、より効率的で安定したトレーニング収束を実現します。

**3. プラグアンドプレイモジュール:**

* ControlNeXtは、他のLoRAウェイトと組み合わせることができる軽量なプラグアンドプレイモジュールとして機能します。これによ り、追加のトレーニングなしで、生成スタイルを変更することが可能です。

**実験結果:**

* ControlNeXtは、Stable Diffusion 1.5、Stable Diffusion XL、Stable Diffusion 3、Stable Video Diffusionなど、様々なベースモデルにおいて、高い汎用性と効率性を示しました。
* 従来手法と比べて、トレーニングの収束が大幅に高速化され、急激な収束問題も軽減されました。
* パラメータ数が大幅に削減され、推論時間の増加も最小限に抑えられました。
* 様々なLoRAウェイトとの組み合わせにおいて、追加のトレーニングなしで、生成スタイルを効率的に変更できることを実証しました。

**結論:**

ControlNeXtは、画像およびビデオ生成のための強力で効率的な制御手法であり、処理時間、メモリ使用量、パラメータ数を大幅に削 減します。
また、クロス正規化とプラグアンドプレイモジュールによる設計により、トレーニングの効率性と柔軟性を向上させています。
ControlNeXtは、様々なベースモデルとLoRAウェイトとの組み合わせを通じて、高度な制御機能と柔軟性を備えた画像およびビデオ生 成を実現する可能性を秘めています。

出題は工夫しないと難しいかも・・・

prompt = "与えたテキストからフレーズを1つ出題しなさい"
response = model.generate_content([prompt, sample_file_2])

print(response.text)
次のフレーズを訳してください:

"I'm going to have a haircut tomorrow."

あなたの好きと僕の好きはきっと違う(9/10)

僕はトマトが苦手だ。味が駄目なのだ。加工されたトマトケチャップは問題ない。リコピンが身体にはいいと聞くので、昔、トマトジュースに挑戦してきたが、やはり慣れない

そんな僕に、誰かが良いトマトを売ろうとされても遠慮されて終わりだ

これを、自分が売り手に回ったときに置き換えて考えてみたとき、

「僕が売ろうとしているものは、実際に記事を読んだ相手が好きなものとは限らないということだ」

何を当たり前なことをと思うかもしれないが、どうして売れないんだ?という思考(沼)に陥ったときに、妙にしっくりくるので書いた

「相手は何が好きなんだろう」を僕は何も知らない

もう少し深く

例えば、食事をするときにはスーパーに買い物に行くだろう。ただし、スーパーは何軒かあったときに、「あなたは、どうしてこのスーパー」で買い物をしたのか?

例えば、他のスーパーに比べて比較的、安価だからとか買う人、それぞれに理由があるだろう

仮に相手の好き(な食べ物)が浅いレベルで分かっても今度は競合が発生する。もう少し、深く知る必要がある

  • 価格

  • 品種

  • 体験

自分は見えていないこと

自動販売機を利用するとき、200m先にある自動販売機を比較して、飲みたい飲み物を買うだろうか?僕は直情型なので、あまり考えていないことの方がいい。仮に未知の場所で同じように考えるだろうか

「一期一会」というケースもあるだろう。
例えば、書店で気になる本を見つけたとき、類似品を探して(売り手にとっての競合品を比較)から再度、買うことはあるだろうか?

自宅ならば、ネットを駆使して探すが、店舗の目についたものだけで判断していることもある。もしかしたら、他の書店には自分にとって、もっと良い本があるかもしれないのにだ。人の視界は狭い

そもそも、検索も認知している範囲だったり、amazonのレコメンドや検索でざっくりみている事が多い

逆に言えば「僕(ユーザ)は、売りたい人の商品を知らない」つまり、売り手が売りたい商品は大抵、知らないものだ。だから、有名になりたいのではないのか?

今までも、下記の要素を活用して、自分の記事(売りもの)を届けようとしてきた

  • フォローの増加

  • ハッシュタグの設定

  • タイトルの設定

けど、自分が読み手の立場になったとき、果たして、ハッシュタグなど使って検索しているだろうか?思い返してみると、そこまでしていないのだ。

これって、書き手側の思考(売り手だけの思考であり、読み手を想定しているようでしていない対応)なのだと思う

noteというコミュニティを考えたときに、書き手側の繋がりも想定されているだろうから、これはこれで合っていると言えば合っている

ただ、上記より、売り手の「想定」と「読み手の行動」は一致していないことが分かる

また、読み手は何を期待しているのだろうか?

どうすればいいのか?

自分がアプローチしている先は、自分が売ろうとしているものを「特別、好きではないです」というグループに発信しているのではないか?

  • どういう特徴の製品なのか

  • 誰におすすめなのか

Aというグループは売ろうとしているモノを好きなグループ
Bというグループは売ろうとしているモノを特別好きではないグループ

実は、下記のようなことをしているのではないか

$$
私の売る方向(アプローチしている方法) → "B" Group 
$$

これをAにすることが命題であり、はじめてスタート地点に立てるのかと

$$
私の売る方向(見直したアプローチする方法) → "A" Group 
$$

測定方法も見直したアプローチ方法も全く検討は使えないが、「別ジャンル」の書き手にアプローチしたら興味を持たれるのではないか?と考えている。何ていうか、書き手同士から脱却は出来ないけど、「自分の行動」から思い起こすに「ある種、エンタメ」というように受け取れていることが多い

※1)自分がしないことを相手に求めるのは無理があるのかもしれない

※2)ああ、そうだ。記事はエンタメ(娯楽のように消費される)のように書くのが、いいのではないかと考えていたのだった

  • 記事の内容を見直す(娯楽ぽく)

もしかしたら、これで消費する側の立場に少し立てているのかもしれない。しかし、いずれにしても、まだ「相手」の立場に立てているとは言いずらい

「相手」は何が欲しいのか?

自分の経験から見直す

  • 自分が買うものを作れればいいのでは?

  • うーん、なかなか、売れないなぁ→売れる方法は食いつく(理にかなっている)

これ、一応、自分発信なんだけど、noteユーザーの投稿記事から内面上は同じニーズを感じてはいる。だけど、実際のところは本当にそうなのかは分からない。(実は虚構なのではないか?)

今、下書きを書いたら、Geminiに推論してもらって届ける先を整理している

信頼できる情報源(ニーズ)とは何か?

そうするとニュースの記事だったりから、大衆的なニーズを知ろうとするわけなのだが、あまりニュースを信用していない。だけど、仮説を立てて相手を知ること(興味を持つ)ことはしていかないといけない

「相手」の立場に立つこととしては、

  • 自分の製品を使うことで、どんな体験ができるか?に留まらず、その後、どんな効果が得られそうか?その先を見据えようと、自分で作ったソフトウェアを検証している

  • 例えば、僕は本の帯に「TOEICの勉強」にとか、「大学受験」にという文言に弱い(影響されやすい)ことが分かっている。実際に、その単語を覚えたら合格する保証はどこにもないのにだ(その商品が提供しているのは単語を提供しているのに過ぎないので、それを使って得られるとすれば、自分が頑張って単語を覚えたという体験であって、どちらかといえばユーザー依存に頼っていることに過ぎないのだ。自分で自分にバイアスを掛けている。だけど、帯も誤解を引き起こすひどいトラップだ。)でも、逆に言えば、そういった文言がトリガーになることは覚えたい

  • どんな文言であれば、惹かれたか?逆に惹かれる文言をGeminiやChatGPTを使って確かめる

また、政府の雇用統計など公的と考えられる情報から何を見出すかをしてこなかったので必要だと思ってはいる

今まで、数字というよりは自分ベースで定性的に想像してきたから、どこかで数字的に捉えることで温度感を知ることも必要だとは思う

もちろん、noteでもアクセス数はあるから一つの指標にはなるだろう。「しかし、何か行動」が変わらなければ、維持はできても、変化は良くも悪くも起こらない

例えば、僕の中でTOP2でビュー(≠読まれている)は下の記事だ。4年以上はnoteをしているが、きっと高ランカーに比べれば、大した数値ではないと思うし、お前、才能ないなと一蹴されてもおかしくないとさえ感じている。ただ、それはそれとして・・・

目に通るのは「消費側」ではなく「発信側」に関係する記事が多いと感じている。僕自身も答えが見つからずによく検索したものだ

18,569(現在まで)

13,808(現在まで)

11,466(現在まで)

その上で、下記の記事を見てみよう

「note」は、2023年11月末時点で会員登録者数が約733万人、月間アクティブユーザー数は約5,145万人というメディアプラットフォームです。

ここでひとつの問いが生まれる

Q. クリエイター(733万人)に向けて、アプローチするか、クリエイターより非会員のアクティブユーザーにリーチするかだ

これは難しい。

  • 月間アクティブユーザーが1日1人のユーザーが30日で30回とカウントされるのか?

下記の記事がnoteに適用されると仮定すれば、非会員にアプローチする方が母数は大きい

MAUの計算では、30日間にアプリでアクションを実行したすべてのユーザーは、ログインしてさまざまなアクションを実行した回数に関係なく、1回だけカウントされます。

5145 - 733 = 4412(非会員)

つまり、変えていくとすれば、非会員向けにアプローチしていくことが正解だと思われる。ただし、書き手が消費者ともなり得ると思うので、引き続き、「消費」的な記事を書いていこうと思う

今日の注目記事を見ていて、いつも思うのはnoteはITはメインストリームではないと感じている。まあ、ZennとかQiitaとかのプラットフォームに行けばいいんじゃない?って話なんだが・・・。

そもそも、noteも運営会社としてITのプロフェッショナルはたくさんいるだろう。技術的に優れているだろう人たちをユーザーに見立てたときに、その人達にとって価値あるITの記事を提供するのは難しいだろう。従って、ITの記事が今日の注目記事に載らないというのが私の仮説だ

どちらかといえば、娯楽に近い記事とか消費に近い記事が、私の画面上ではピックアップされている。他のユーザーも同じ内容が表示されているのかは謎だ。もし、違う記事が表示されていたら、この仮説は覆される

彼らにも、行動原理はあると思う。例えば、会社の運営方針に従うなどだ。もっといえば、noteが活性化する記事を選んでねとか(純粋に面白いよねとか)、色々とあると思う

一気に大衆を知ることは難しいだろうから、ほんの少しでもいいので、彼らの好みを知る、フォロワーを知るとかでも相手を理解する上でいいと思う。ある種の狙いをつけられることになる

でも、狙いをつけたところで、本当に相手にとって良い体験を提供できるかは別の話だと考えていて、そこに誠実に向き合えるかが鍵だと考えている

で、ざっと見てきたのだが、運営者の更新は頻繁ではない

いや、正しいんですよ?
だって、会社で仕事をしているのだろうから、むしろ、正常であると。

会社員として働いていれば、noteを更新しなくてもお給料はもらえますよねって話で、自分の記事を更新して注目してもらえることが仕事ではないと

んん? すると注目記事の内容から推薦してもらえる記事の特徴を調べるわけだけど、「やっぱりキーワードは”消費”」である

もう少し言えば、結果的にそれは

  • 消費を促すことにつながる

ことを意味するのではないか

もしくは

  • 作品の消費

娯楽としても読めることではないか?

いや、それにしても国語にある「作者の気持ち」を述べよという問題を
「そんなの知らねえよ」で済ましてきた人間なので、
国語の取り組みは今更ながら必要な行為だったと感じている

結局、何がいいのか?

  • 読み手は消費できる

  • 投稿者は注目してもらえる

  • 運営はユーザーの活性化を促せる

3つ目は本当に期待できるか書いていて怪しいが、書き手の売れたい!というニーズから分析しようという行動は起こり得ることが想定されるので、結果的には、noteの投稿頻度は上がるのではないか?

ただ、外部流入(twitter)が見込めるのかは正直、怪しい部分があるので、あくまでnoteの範囲内で考えたらどうだろうか

というわけで・・・

今後の目標は以下にする

消費側にとって消費となり得るような記事を書く

ヨドバシは置き配を対応しないのか?(9/10)

Amazonは置き配ができるようになってから便利になって、再度、使い始めている。それまではヨドバシ一択だったのだが、自分の使い方が悪いのか配送オプションに置き配がない。今後、置き配を選択肢に入れて欲しいが、難しい場合はコンビニに止めるなども検討したいと思う

ちなみにヨドバシも配送はメッチャ早いので使っている

Pixivはテーマを一貫すると良いだろう(9/10)

最近、始めたPixiv、閲覧数が反映されるのは有り難いという話を先日した

僕が閲覧する絵は一定のテーマがある。「数値は見ていない。ユーザーがどう感じるかだ」数値を伸ばすためには必要だが、やはり、見ていてよかったと思うものは、それなりに数字も付いてくるので、まずは「視聴体験としてどうだったか」を重視していこうと思う

twitterやnote、他、何でもいいと思うのだが、ユーザーは自分を認知しない。それは母数があまりに多すぎるからだ。世界に発信できるチャンスがあれば、ある媒体ほど、活躍するのは難しいと考えた方がいいと考えている

きっかけは、Pixivで自分が何気なくいいね!を押しまくっているので、似たような文化がPixivにもあるのかもしれないと「自分の体験」から後付けで考えた。プラットフォームを選ぶ際の参考にしてはどうだろうか?

※ noteはスキを制限しているのでそれは方針の違いだと思うので否定はしない。

ただ、改めて絵の体験は文字よりも消費しやすいとは感じている

noteの今日の注目記事は「書店で平積みされた本」(9/9)

と捉えた。問題は平積みされていない自分の本(記事)をどうアプローチするかって話

プログラミングは敷居が低い(9/9)

敷居が低いことは良いことだ、ただし、その代わり競争に勝つことが難しいということだ。個人で車を作る人はまずいないだろう(コストも掛かるし在庫のリスクは個人で負えないだろう)。プログラミングは労働力という人件費(吐けない在庫コストに見立てるか?)をクリアできれば、無形物なので在庫のリスクはない

自由に思考できる幸せ

これは大事にしたい。今まで自由に思考できる機会というのは早々なかったからな

よく忘れるけど、作品を作れ、作品を!

どんな製品を買おうと作品を作れなければ、道具は生きてこない。消費は別だけどね