Тёмный
StudyCo
StudyCo
StudyCo
Подписаться
StudyCoは、アプリケーションの設計・実装から、統計・機械学習、ブロックチェーンなど、ITを中心に幅広く調査・実践しているコミュニティです。4年半ほどクローズドな勉強会を続け、2021年の秋からconnpassで公開勉強会を始めました!

機械学習やアプリケーション開発など、今後も幅広いテーマで勉強会を開催していく予定です!
Комментарии
@tk2780
@tk2780 Месяц назад
わかりやすい解説ありがとうございます! 現在langchainを使わずにlangsmithだけで評価システムを構築しているのですがpropt管理のhubを使うにはlangchainが必要な感じでしょうか?
@studyco7292
@studyco7292 Месяц назад
コメントありがとうございます。登壇者の大嶋です。 LangSmithのHub機能を使ってLangSmith上からプロンプトを取得するには、LangSmithのクライアントライブラリを使うことになります。 公式ドキュメントは以下になります。 docs.smith.langchain.com/how_to_guides/prompts/manage_prompts_programatically#pull-a-prompt 私は試したことはありませんが、おそらくLangChainを基本的には使わない場合でも、LangSmithでプロンプトを管理することはできると思います。
@tk2780
@tk2780 Месяц назад
@@studyco7292 ご丁寧にありがとうございます!最新バージョンのlangsmithで手元で試したのですがlangchain_coreのimport errorになったのでlangchainはやはり必要そうに見えました。(旧バージョンなら出来たのかも?) langsmithのコミュニティslcckで今度聞いてみたいと思います。
@ざわりん
@ざわりん 3 месяца назад
7:50
@村山理-d8k
@村山理-d8k 4 месяца назад
申し訳ありませんが、2点質問させてください。 1)講義中の質問に対するご回答が聞き取れなかったのですが、そもそもStreamの目的は何ですか? word(?)単位の出力させているのは、想定していたもしくは想定外の単語が出力されたときに、何らかのアクションを取るためなのでしょうか? 2)Streamの出力単位が、英語の場合はword、日本語の場合は1文字になっているのは、どういう理由なのでしょうか?LLMモデルを構成するTransformerをイメージすると、出力単位がトークンであれば、わかりやすいのですが?
@studyco7292
@studyco7292 4 месяца назад
コメントありがとうございます。登壇者の大嶋です。 >1)講義中の質問に対するご回答が聞き取れなかったのですが、そもそもStreamの目的は何ですか?word(?)単位の出力させているのは、想定していたもしくは想定外の単語が出力されたときに、何らかのアクションを取るためなのでしょうか? OpenAIのChat Completions APIの場合、ストリーミングを使用する目的は、ユーザーにできるだけ早く応答を返し始めることによるユーザー体験の向上であることがほとんどだと思います。 なお、特定の単語が出力されたときに生成を停止して何か処理したりしたい場合は、「stop」というパラメータを使うことができます。 platform.openai.com/docs/api-reference/chat/create#chat-create-stop >2)Streamの出力単位が、英語の場合はword、日本語の場合は1文字になっているのは、どういう理由なのでしょうか?LLMモデルを構成するTransformerをイメージすると、出力単位がトークンであれば、わかりやすいのですが? Streamの出力単位については、OpenAIの公式ドキュメントで明言されている箇所が見つからなかったので、「分からない」という回答が正確ではないかと思います。 ただし、推測としてはトークン単位でStreamされている可能性はあります。 日本語の場合1文字で1トークンとなる場合もあります。 詳細は以下のTokenizerで確認してください。 platform.openai.com/tokenizer よろしくお願いします。
@村山理-d8k
@村山理-d8k 4 месяца назад
@@studyco7292 1)について 申し訳ありません。 「ユーザーにできるだけ早く応答を返し始めることによるユーザー体験の向上」とは、「Sreamを使用しない場合のChat Completions APIの場合、回答文が完成してから出力し始め、その結果応答がSream使用をした場合に比べて遅れる」という意味でしょうか?
@studyco7292
@studyco7292 4 месяца назад
>「Sreamを使用しない場合のChat Completions APIの場合、回答文が完成してから出力し始め、その結果応答がSream使用をした場合に比べて遅れる」という意味でしょうか? おおむねそのような理解でよいと思います。Streamを使うと応答し始めるのが早くなる、ということになります。 あまりイメージがついていないようでしたら、実際にChat Completions APIにふれて試していただくことをおすすめします。
@村山理-d8k
@村山理-d8k 4 месяца назад
度重なる質問にもかかわらず、ご丁寧に回答いただき、本当にありがとうございました。
@渋谷歯科技工所-b9p
@渋谷歯科技工所-b9p 4 месяца назад
大変勉強になりました。ありがとうございます。質問です。gradioじゃなくStreamlitを使った理由があれば教えてください
@studyco7292
@studyco7292 4 месяца назад
コメントありがとうございます。登壇者の大嶋です。 GradioではなくStreamlitを使ったことには、特段の理由はありません。 強いて言えば、実務でStreamlitを使っており、Streamlitでの実装例をすでに持っていたためです。 (実務でGradioではなくStreamlitを採用したことも、好み程度の理由になります) Gradioでもおそらく同様のことは実現できると思います。 よろしくお願いします。
@渋谷歯科技工所-b9p
@渋谷歯科技工所-b9p 4 месяца назад
@@studyco7292 お答えいただきありがとうございます。gradioでのchatbot実装を勉強中ですがStreamlitもシンプルで良いと思いました。
@村山理-d8k
@村山理-d8k 5 месяцев назад
上記の質問の補足ですが、なぜLLMはAnswerを返さずに、Search 東京 天気と返すべきと判断できるのでしょうか?
@studyco7292
@studyco7292 5 месяцев назад
コメントありがとうございます。登壇者の大嶋です。 LLMがAnswerを返さずに「Search 東京 天気」を返してくる理由は、そのモデルが学習に基づいて推論し、次のトークンとしてそれらが採用されたからです。 それ以上、なぜそのような動作になったのか根本的な説明はできません。 (LLMが何かを出力した理由は、根本的に説明することはできません) 感覚的には、そのように学習しているから、と言えるかもしれません。 とくに、OpenAIのGPT-3.5やGPT-4のFunction calling機能については、ツールを使う判断を適切に行いやすいようにモデルがファインチューニングされています。
@村山理-d8k
@村山理-d8k 5 месяцев назад
なるほど’! GPT-3.5やGPT-4は、Fanction calling機能によって、Searchを依頼する選択肢もあることを学んでいるのですね。もし学んでいなければ、自分の知っている範囲で答える(ハルシネーション)ことになるのですね? 今更、超基本的なことで恐縮ですが、GPT-3.5やGPT-4とChatGPTのシステム上の違いは何ですか?
@studyco7292
@studyco7292 5 месяцев назад
>GPT-3.5やGPT-4は、Fanction calling機能によって、Searchを依頼する選択肢もあることを学んでいるのですね。 もう少し正確に言うと、Function calling機能がなくても、高性能なモデルであれば、検索が必要な入力に対して「Search」と出力すべきだと推論してくれることが多いです。 Function calling機能のリリース時に、そのような推論がよりうまく動作しやすいようモデルがファインチューニングされたということであり、そのような推論のためにFunction calling機能は必須ではありません。 「Searchを依頼する選択肢もあることを学んでいる」ということについても、直接そのようなことを学んでいるというよりも、膨大な学習データに基づいてそのような推論をした、ということになります。 >もし学んでいなければ、自分の知っている範囲で答える(ハルシネーション)ことになるのですね? LLMは直接的に学んだこと以外にも適切な推論をすることが多い(つまりZero-shot性能が高い)ことが大きな特徴です。 直接的に学んだこと以外にも適切な推論をすることは多く、そのようなケースはハルシネーションとは言いません。 >今更、超基本的なことで恐縮ですが、GPT-3.5やGPT-4とChatGPTのシステム上の違いは何ですか? GPT-3.5やGPT-4やモデルの名前であり、ChatGPTはWebサービスの名前だと言われています。
@村山理-d8k
@村山理-d8k 5 месяцев назад
お忙しい中、度重なる質問に対して、懇切丁寧にご回答いただき、大変恐縮いたしております。今後とも、よろしくお願いいたします
@村山理-d8k
@村山理-d8k 5 месяцев назад
Part2の例で、LangGraph(エージェント)はクエリ(質問)に対して、即Answerせずに、Search(TooLを使って検索)すべきとどのように判断しているのですか?(エージェントは、検索しなければ答えられないと、どのように自分で認識できるのですか?)
@studyco7292
@studyco7292 5 месяцев назад
コメントありがとうございます。登壇者の大嶋です。 Answerが必要かSearchが必要かは、LangGraphが判断しているのではなく、LLMが判断しています。 質問に対して何をすべきか判断する脳のようにLLMを使う、というのがLLMを使ったAIエージェントの大きな特徴の1つです。 過去の勉強会でこの仕組みについて解説しているので、よろしければ参照してください。 ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-uxt0w_u4EwM.html また、実際にはより安定的に動作するよう「Function calling」などと呼ばれる機能を使っているので、ご興味あればFunction callingのドキュメントを参照してください。 platform.openai.com/docs/guides/function-calling docs.anthropic.com/en/docs/tool-use
@村山理-d8k
@村山理-d8k 5 месяцев назад
ありがとうございました
@ogurahiroto9591
@ogurahiroto9591 6 месяцев назад
5:22
@マルコ-d4v
@マルコ-d4v 7 месяцев назад
めちゃくちゃ有益😂
@takaball
@takaball 7 месяцев назад
ありがとうございます。たいへん興味深く聞かせていただきました。
@studyco7292
@studyco7292 8 месяцев назад
登壇者より 1:09:40 あたりからのRunnableLambdaの箇所をより簡単に書きたい場合は、以下のようなコードでも動作します。 ``` chain = ( {"context": retriever, "question": lambda _: user_message} | prompt | model | output_parser ) ``` `lambda _: user_message`の箇所が`RunnableLambda(lambda _: user_message)`に自動で変換されるためです。
@re9236
@re9236 9 месяцев назад
デカすぎんだろ... 勉強になりました
@kk-cv1kd
@kk-cv1kd 9 месяцев назад
5:56本編
@pannakoota1
@pannakoota1 10 месяцев назад
すごいわかりやすかったです。ありがとうございますm
@わたり-g1o
@わたり-g1o 10 месяцев назад
解説ありがとうございます。作りたいアプリが出来たので全体像の勉強・整理になりました。
@FUKUYAMACITYSAMURAI
@FUKUYAMACITYSAMURAI Год назад
全体の流れが大変わかりやすい
@shinjiogishima3546
@shinjiogishima3546 Год назад
ありがとうございます。 見落としてしまったのかもしれないですが、Fine tuningにGPUもLoRAも使わなくてできるということなのでしょうか? それは(インストラクション チューンドの)rinnnaだからなのでしょうか?
@studyco7292
@studyco7292 Год назад
コメントありがとうございます。発表者の江﨑です。 今回CPUだけでFine-tuningできていたのは、利用したrinnaのモデル(huggingface.co/rinna/japanese-gpt2-small )が軽量だったためだとご理解いただければ幸いです。 パラメータ数が多くなって重いモデルになると、原理上はCPUだけでもLoRAなしのFine-tuningやAI推論実行はできないことはないですが、非常に時間がかかってしまって非現実的になってくるという認識です。
@ピカチュウ-w2j
@ピカチュウ-w2j Год назад
こちらはUdemyの内容と同じでしょうか?
@ピカチュウ-w2j
@ピカチュウ-w2j Год назад
こちらの動画はテキストダビンチ003を使用していますが、UdemyではGPT-3 turboの使用をしていますか?
@studyco7292
@studyco7292 Год назад
@user-tm7qe5tz3h 様 コメントありがとうございます! この動画の発表者・Udemy講座の講師の大嶋です。 Udemy講座「LangChainによる大規模言語モデル(LLM)アプリケーション開発入門」では、この動画と違い、gpt-3.5-turboを中心に解説しています。 また、Udemy講座にもこの動画と重複する内容はありますが、LangChainについてさらに丁寧に解説し、実際のアプリケーション開発まで扱っています。 以下のページで割引クーポン付きURLを公開しているので、よろしければご利用ください! www.nextskill.co.jp/courses
@好きな事で生きるプロゲーマー自
すごいです。 エンジニア脳でここまで使いやすいローコードツール初めてみました。
@dennoucoil4423
@dennoucoil4423 Год назад
もしくは薬剤師側だけの音声データを先に文字起こしして「以下のセリフは薬剤師のものです。」 とプロンプトに含めてGPTに与えるとか。
@dennoucoil4423
@dennoucoil4423 Год назад
話者分離のところ、オンラインなら薬剤師側の声を別に録音しといて、機械っぽい声に加工した後会話音声と合成して話者分離用の音声データ作ったら精度上がるのでは?
@感謝感謝-d4v
@感謝感謝-d4v Год назад
10:00〜
@aproject_type323
@aproject_type323 2 года назад
ax.imshow(np.array(mnist_x[i, :].reshape(28,28)),cmap='binary') この行でエラーが出ます。 何度も丁寧に打ってもエラーがでます
@temphetar
@temphetar Год назад
mnist_xはdataFrame形式で前段処理で代入されます。 ax.imshow(np.array(mnist_x.iloc[i].values.reshape(28, 28)), cmap='binary') とすれば上手く動くかもしれないです。
@uk3700
@uk3700 2 года назад
2:17:26 「データがいっぱいになれば事後分布は尖っていくので過学習に近しいことになる」 ここがわかりませんでした。 直感的にデータ数を増やすと過学習はしにくくなると思うのですが,違うのでしょうか。 そもそも事後分布が尖っていくと過学習するというのはどういう意味でしょうか? また,統計的機械学習や非統計的機械学習(この言葉は初めて聞きました)など,機械学習の分類について独自の見解をされているようにみえます。 どこまでが世間一般の理解なのか,どこからが独自見解なのかを明確にすべきかと考えます。 単なる言葉の定義の問題なのですが一般的に異なる意味で理解されている言葉を別の意味で利用したり, よく知られた別の言葉が存在するのに別の言葉を充てがうことは混乱を生むので避けるべきかと考えます。
@chanileon9803
@chanileon9803 Год назад
chatgptでベイズ統計と機械学習で2つの質問をしたのですが、以下の回答が返ってきました。 🔸質問1 : データがいっぱいになれば事後分布は尖っていくので過学習に近しいことになる ベイズ統計について上の文章はあっているのか? 🔹回答1 : いいえ、上の文章は正確ではありません。事後分布がデータがいっぱいになると尖ることは一般的には起こりません。むしろ、ベイズ統計ではデータが増えるにつれて事後分布がより収束し、より正確な推定が得られる傾向があります。 過学習は、統計モデルが訓練データに対して過剰に適合し、未知のデータに対しては予測性能が低下する現象です。ベイズ統計では、事前分布とデータから事後分布を推定するため、過学習を避けるための手法が組み込まれています。 一般的に、ベイズ統計では事後分布がデータによって更新されるため、より多くのデータを取り入れることでより確からしい推定が得られます。事後分布はデータの情報を反映するため、データが増えると事後分布はより広がる傾向があります。つまり、過学習に近づくのではなく、より一般化された推定が可能となります。 ただし、事後分布がデータが増えると必ずしも尖るわけではありません。データの質やモデルの複雑さなどによって事後分布の形状は異なる場合があります。ですので、一般論として「事後分布がデータがいっぱいになれば尖る」とは言えません。 🔸質問2 : データがいっぱいになれば事後分布は尖っていくので過学習に近しいことになる。 機械学習において上の文章はあっているのか? 🔹回答2 : 機械学習において、上記の文は正確ではありません。データが増えることで、単に事後分布が尖るだけでは、必ずしも過学習に近づくとは限りません。 過学習は、モデルが訓練データに対して過度に適合し、未知のデータに対する予測性能が低下する現象です。機械学習において、データが増えると、通常はより一般化されたモデルを構築することができます。十分な量のデータがあれば、モデルはより多くのパターンを学習し、未知のデータに対しても良い予測を行うことが期待されます。 データが増えることで過学習のリスクは低下する傾向があります。追加のデータが新たな情報を提供し、モデルがより一般化された特徴を学習することができます。したがって、データがいっぱいになるほど、過学習に近づくという主張は一般的には当てはまりません。 ただし、データが非常に多くなる場合や、モデルが非常に複雑な場合は、過学習のリスクが増加する可能性があります。適切なモデルの複雑さとデータ量のバランスを保つことが重要です。