サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
www.ai-shift.co.jp
はじめに こんにちは、AIチームの大竹です。 最近、高性能な日本語音声認識モデルのリリースが相次いでいます。普段、音声認識を用いたプロダクト開発をしている中で、各モデルの音声認識性能や推論速度がどれくらいのものなのか気になったので簡単な実験をして性能を比較してみました。 書き起こしや評価周りの実装も記載しているので参考にしていただけたら幸いです。 モデルの直近のリリースをまとめると、以下のようになっています。ReazonSpeechコーパスのリリースを皮切りに日本語に特化した音声認識モデルの開発の勢いが加速しているように思えます。ReazonSpeechコーパスは、地上波テレビ放送から収集された音声に基づいて構築されています。v1では19,000時間、v2では35,000時間の音声が含まれていて、日本語音声認識モデルの学習リソースとしては世界一の規模となっています。 公開時期 モデル名 公
こんにちは AIチームの戸田です 今回は先月スタンフォード大学が発表した新しいParameter-efficient fine-tuning(PEFT)のReFTを試してみたいと思います。 PEFT PEFTはLLMのような大規模な事前学習済みのニューラルネットワークのモデルを、効率的にfine-tuningする手法の総称です。モデル全体ではなく一部のパラメータだけを更新することで計算コストを大幅に削減できる上に、Full fine-tuning(モデル全体を学習)するのと同等の性能を達成することができると言われています。代表的なものにLow-Rank Adaptation(LoRA)が挙げられます。 ReFT Representation Finetuning (ReFT)は、LoRAとよく似たPEFT手法です。違いは、LoRAがモデルの重みを部分的に更新するのに対し、ReFTはモデルの
こんにちは! AIチームの戸田です 本記事では私がKaggleのコンペティションに参加して得た、Transformerをベースとした事前学習モデルのfine-tuningのTipsを共有させていただきます。 以前も何件か同じテーマで記事を書かせていただきました。 Kaggleで学んだBERTをfine-tuningする際のTips①〜学習効率化編Kaggleで学んだBERTをfine-tuningする際のTips②〜精度改善編〜Kaggleで学んだBERTをfine-tuningする際のTips③〜過学習抑制編〜Kaggleで学んだBERTをfine-tuningする際のTips④〜Adversarial Training編〜Kaggleで学んだBERTをfine-tuningする際のTips⑤〜ラベルなしデータ活用編〜 今回は学習効率化について書かせていただきます。このテーマは以前書かせ
こんにちは AIチームの戸田です 今回は日本語LLMのOpenCALMの7BモデルをSFTからRLHFまで一通り学習してみたいと思います。一通り動かすことを目的としており、パラメータ調整やデータクレンジングなどのより良い学習を行うための工夫は本記事では行いません。 言語モデルの一連の学習については以前、記事で取り上げさせていただきましたのでそちらをご参照いただければと思います。 trlxを用いた文書生成モデルの学習①~ILQL編~trlxを用いた文書生成モデルの学習②~PPO編~ 以前は学習ライブラリにtrlxを使用しましたが、今回はSFT用のTrainerを提供してくれているtrlを使います。 データセット JGLUEのMARC-jaを使って、ポジティブな文章を生成するように学習させたいと思います。MARC-jaは多言語のAmazonレビューコーパス(MARC)の日本語部分に基づいて作ら
はじめに こんにちは、AIチームの杉山です。 今回の記事では、QA検索などを行う際の文類似度の計算に、文の埋め込みベクトルを用いてknnで計算した場合とSVMを用いた場合の結果を簡易的ですが定量的に比較してみたいと思います。 動機としては、LangChainのRetrieverの実装にkNNだけでなくSVMを用いた実装が採用されており、その説明の中で以下のようにSVMの方が良いことが多いとされていたことでどれくらい性能が異なるかを確認したいと思ったためです。[1][2] TLDR in my experience it ~always works better to use an SVM instead of kNN, if you can afford the slight computational hit 具体的には、クエリ自身だけを1クラス、検索対象のドキュメント集合全体を別の1ク
こんにちは、AIチームの友松です。2023年3月1日にOpenAIより待望のWhisperとChatGPTのAPIが公開されました。 WhisperはOpenAIが作成した音声認識モデルで多言語の認識や翻訳、プロンプトによる制御ができることが特徴になっています。 ChatGPTは対話形式の大規模言語モデルで非常に質の高い応答をすることから世の中的にかなりの話題になっています。GPT-3.5シリーズのモデルにRLHF(人間のフィードバックによる強化学習)をすることによって、大規模言語モデルの出力の調整を行っています。筆者もChatGPTが出た当初裏側に人間のオペレータが大量に待ち構えて応答を行っているのではないかと疑うくらいの衝撃でした。 RLHFに関しては本ブログでも取り上げているのでこちらの記事も合わせて御覧ください。 trlxを用いた文書生成モデルの学習①~ILQL編~trlxを用いた
こんにちは AIチームの戸田です 今回は最近話題のChatGPTの学習に使われているRLHF(Reinforcement Learning from Human Feedback)を行うことができる強化学習フレームワーク、trlxを使った文章生成を試してみたいと思います。 trlxは強化学習手法としてILQL(Implicit Language Q-Learning)とPPO(Proximal Policy Optimization)の2種類が用意されており、それに加えて通常の言語モデルの学習であるSFT(Supervised Fine-Tuning)も実装されています。 本記事では日本語感情分析データセットWRIMEのデータでILQLを使った学習を行い、PPOは次回の記事で試したいと思います。trlxライブラリを一通り動かすことを目的とし、パラメータ調整やデータクレンジングなどのより良い
こんにちは.AIチームの二宮です. 本記事では,最近話題のPrompt-tuningのご紹介と,実装・実験・分析を行ってみました. はじめに 近年,言語モデルの大規模化が著しいです.例えば,huggingfaceで公開されている日本語版のいくつかの言語生成モデルGPTのパラメタ数は以下になります. (M: million, B: billion) rinna/japanese-gpt2-xsmall: 37M rinna/japanese-gpt2-medium: 336M rinna/japanese-gpt-1b: 1.3B abeja/gpt-neox-japanese-2.7b:2.7B naclbit/gpt-j-japanese-6.8b:6.8B BERT-baseが約110M,BERT-largeが約340Mであることを考えると,非常に大規模であることを実感しますね.最近話
こんにちは!AIチームの戸田です! 本記事では私がKaggleのコンペティションに参加して得た、Transformerをベースとした事前学習モデルのfine-tuningのTipsを共有させていただきます。 以前も何件か同じテーマで記事を書かせていただきました。 Kaggleで学んだBERTをfine-tuningする際のTips①〜学習効率化編 Kaggleで学んだBERTをfine-tuningする際のTips②〜精度改善編〜 Kaggleで学んだBERTをfine-tuningする際のTips③〜過学習抑制編〜 Kaggleで学んだBERTをfine-tuningする際のTips④〜Adversarial Training編〜 今回はラベルなしデータの活用について書かせていただきます。 世の中の様々な問題を、蓄積された大量のデータを使った教師あり学習で解こうとする試みは多くなされてい
こんにちは 青野(brn)といいます 株式会社AI Shiftで開発責任者してます こんな人間です 株式会社AI ShiftのAdventCalender 22日目です 今更ですがBunについてです 全然追えていなかったんですが、ひとしきり騒ぎが終わったっぽいのでブログのネタとして調べてみることにしました 一応2018年くらいから V8 のContributorしたり、こんな記事 https://abcdef.gets.b6n.ch/entry/2019/12/11/121840 https://abcdef.gets.b6n.ch/entry/2019/07/22/142510 を書いているので、まあそのシリーズの一環として場所を会社のテックブログに移してやっていこうかと Bun 2022にReleaseされたJavascript RuntimeでBundlerなヤツ ウリとしては 速い
TOPTECH BLOG【AI Shift/Kaggle Advent Calendar 2022】Kaggleで学んだBERTをfine-tuningする際のTips④〜Adversarial Training編〜 【AI Shift/Kaggle Advent Calendar 2022】Kaggleで学んだBERTをfine-tuningする際のTips④〜Adversarial Training編〜 こんにちは!AIチームの戸田です! 本記事はAI Shift Advent Calendar 2022、及びKaggle Advent Calendar 2022の9日目の記事です。 本記事では私がKaggleのコンペティションに参加して得た、Transformerをベースとした事前学習モデルのfine-tuningのTipsを共有させていただきます。 以前も何件か同じテーマで記事を書
こんにちは、AIチームの友松です。本日はレポーティング作業の運用効率化のためにスプレッドシートとBigQueryの連携を行ったので、それについてブログを書こうと思います。 AI Shiftでは普段、レポーティングのためのデータの可視化にはTableauを使用しています。Tableauは毎日更新が必要なレポートを作るのに最適なツールであると考えています。 一方で、今回必要だった要件として、スプレッドシート上でデータが毎日更新されて、さらにデータを1行ずつ確認して各行にメモを残す必要があるという要件だったので、調査を行いました。 BigQueryとGoogle Spread Sheetが連携できるようになったのは知っていたのですが、まだ試せていなかったのでこれを機に利用してみたら非常に便利だったのでメモを残したいと思います 想定しているケースは以下になります エンジニアじゃないメンバーがデータ
こんにちは AIチームの戸田です 今回は最近リリースされたHuggingFaceをベースにした音声処理用のツール、HuggingSoundを使って音声認識を試してみます。 HuggingSoundはHuggingFaceが公式に出しているものではなく、リオデジャネイロ大学のJonatas Grosman氏が個人的に開発しているライブラリで、今年に入ってリリースされたばかりの新しいライブラリです。 日本語の音声認識モデルはGrosman氏がこのライブラリを使ってCommon Voice、 CSS10、 JSUTをfine-tuningしたものを公開してくれていますが、本記事ではイチからfine-tuningを試してみたいと思います データ準備 学習に使用するデータは声庭で公開されているデータを利用します。声庭は有志でアノテーションを行っている公開音声データで、利用・修正・再配布が自由なオープ
こんにちは AIチームの戸田です 今回は音声特徴抽出ライブラリ、openSMILEを使った音声分類を試してみたいと思います openSMILE openSMILE (open-source Speech and Music Interpretation by Large-space Extraction) は、音声分析、処理、分類のためのオープンソースのツールキットです。主に感情認識の分野で広く用いられています。 C++で書かれていますが、Pythonのラッパーがあり、pipで簡単にインストールできます。 ComParE 2016やGeMAPSなど様々な特徴セットを利用することができ、データフレーム形式で出力されるので、後段の処理も作りやすいものになっています。 使用できる特徴セットはドキュメントのFeatureSetの項目をご参照ください。 音声分類 openSMILEを使って分類問題を
こんにちは AIチームの戸田です 今回は日本語NLPライブラリであるGiNZAのv5から実装されたTransformerモデルによる固有表現抽出を試します。 固有表現抽出とは、入力となる自然文から地名や製品名などの固有名詞を抽出するタスクです。今回固有表現抽出に使用するデータセットとして、ストックマーク株式会社が作成したWikipediaを用いた日本語の固有表現抽出データセットを使用します。また、Transformerモデルは処理に時間がかかるので、環境はGoogle ColaboratoryのGPU環境を利用しました。 事前準備 wgetを使ってデータセットをダウンロードします。 wget https://raw.githubusercontent.com/stockmarkteam/ner-wikipedia-dataset/main/ner.json 必要なpythonライブラリをダ
こんにちは、AIチームの東です。 本記事はAI Shift Advent Calendar 2021の18日目の記事です。 今回は、Heartex社が提供しているアノテーションツールであるLabel StudioとGCP上でのデプロイの手順について紹介していきます。 Label Studio 近年、テキスト翻訳や対話アシスタントなど、深層学習を用いたプロダクトやサービスが多くみられるようになりました。 しかし、一般にそのような大規模なモデルを利用するには入力データ(音声、画像、テキスト等)とその正解ラベル(発話内容、画像の説明文、翻訳結果等)が大量に必要になります。モデルの学習に利用する入力データと正解ラベルの組を作成する作業をアノテーションと呼び、現在様々なアノテーションツールが開発、提供されています。 Label Studioはそんなアノテーションツールの一つで、画像やテキスト、音声な
こんにちは AIチームの戸田です 自然言語処理でよく扱われるタスクの一つである文書分類、精度を上げる工夫などはよく見られますが、実務ではどうしてその分類になるのか、その判断根拠についての説明が重要になる場面に多く直面します。 機械学習の判断根拠についてはExplainable AI という分野で近年注目されており、昨年のKDD2020のチュートリアルでも扱われていました。 本記事では文書分類を行う手法として、古典的なCountVectorizerとロジスティック回帰を使った手法と、近年主流となっているBERTのfine-tuningを行う手法の両方の判断根拠の可視化について紹介したいと思います。 データセット UCIのSMS Spam Collection Data Setを使います。 5572件のSMSのデータセットで、そのうちスパムSMSが747件あります。 以下のコードでダウンロード
こんにちは AIチームの戸田です 以前、BERTをfine-tuningする際のTipsとして混合精度の利用や、Uniform Length Batchingをつかった学習効率化を紹介させていただきましたが、今回はTPUを使った高速化について紹介したいと思います。 Flax TPU対応というと、まずGoogleのTensorflowが思い浮かびますが、今回は同じGoogleのニューラルネット学習用フレームワークのFlaxを使います。 FlaxはTensorflowと比較して簡潔に、かつ柔軟に書くことができると言われており、huggingfaceのtransformersもv4.8.0からFlaxをサポートするようになっています。 JAX/Flax has joined the ranks of PyTorch and TensorFlow in 🤗Transformers! Versio
こんにちは AIチームの戸田です 本記事では前回に引き続き、私がKaggleのコンペティションに参加して得た、Transformerをベースとした事前学習モデルのfine-tuningのTipsを共有させていただきます 前回は学習の効率化について書かせていただきましたので、今回は精度改善について書かせていただきます データ 前回に引き続きKaggleのコンペティション、CommonLit-Readabilityのtrainデータを使います validationの分け方などは前回の記事を参照していただければと思います 精度改善 一般的なニューラルネットワークモデルの精度改善方法として、ハイパーパラメータのチューニングやData Augmentationが上げられますが、ここではBERTを始めとするTransformerをベースとしたモデル(以降Transformerモデル)特有の工夫について
こんにちは AIチームの戸田です 近年、自然言語処理タスクにおいて、BERTを始めとするTransformerをベースとした事前学習モデルを感情分類や質問応答などの下流のタスクでfine-tuningする手法が一般的になっています huggingfaceのTransformersなど、事前学習モデルを簡単に使うことのできるライブラリもありますが、Kaggleなどのコンペティションで上位に入るには素のモデルのままでは難しく、ヘッダや損失関数などの工夫などが必要です 本記事では私がKaggleのコンペティションに参加して得た、事前学習モデルのfine-tuningのTipsを共有させていただきます 書きたい内容が多くなってしまったので、今回は学習の効率化について、次回精度改善について、と2回に分けて書かせていただきます 事前準備 学習データとして、先日終了したKaggleのコンペティション、C
こんにちは、Development Teamの三宅です。 先日、社内(AI事業本部内)でSQL研修の講師を担当したので、今回はその内容について簡単に共有したいと思います。 はじめに 例年、AI事業本部では、新卒エンジニアの育成のためにソフトウェアエンジニア研修を行っております。今年はフルリモートでの実施となりました。研修期間は2週間ほどで、内容は前半が講義、後半が実践(チーム開発)でした。私が担当したのは、講義パートの一部であるSQL研修です。SQLやRDBにあまり慣れていない人でも、できるだけ体系的な学びが得られるようにすることを目標に、様々な資料をまとめて提供する方針で準備しました。結果的には、ハンズオン込みで4時間ほどのやや長い講義となりましたが、勉強になったという声も頂けたのでやって良かったと思っています。 研修資料 研修内容 SQL研修の内容は、基本的には大学のデータベース講義で
こんにちは AIチームの戸田です 先日、huggingfaceのAutoNLPで日本語が扱えるようになりました。 こんにちは日本 ! 🤗 AutoNLP supports Japanese NOW!!! This means you can now train binary classification, multi-class classification, entity recognition, summarization and speech recognition models for Japanese using AutoNLP 🎉🎉! Check it out here: https://t.co/HyjPGE2eEA pic.twitter.com/VWfYmj9flQ — abhishek (@abhi1thakur) April 21, 2021 今回はAutoNL
こんにちは AIチームの戸田です 今回は異常検知アルゴリズムを用いたテキストノイズ抽出を試してみたいと思います。 自然言語処理を行う際に必ずと言っていいほど直面する問題の一つがテキストのノイズです。特に実環境で動いているプロダクトのログデータを扱う際は、「あああああああ」のような無意味な文字列や「よろしくお願いします」のようなタスクと関係の無い一般的な文章など多種多様なノイズが存在するため、これらを除去しなければなりません。 今回紹介する手法をきっかけはこちらのブログで、簡単に手法を説明すると、GloVeとTF-IDFから得られたベクトルをPCAで圧縮し、IsolationForestで異常値を見つける、といったものでした。こちらのブログではNIPS 2015の論文に対して手法を適用してい概ね良い結果を収めています。本記事では日本語のカスタマーサポートのデータに適用し、言語とドメインを変え
こんにちは AIチームの戸田です 本記事では昨日終了しました言語処理学会第27回年次大会(NLP2021)のワークショップとして開催されたクイズAI王〜クイズAI日本一決定戦〜のふりかえりをしたいと思います。 クイズAI王について 日本語を対象とした質問応答研究を促進させることを目的として、クイズ問題を題材とした質問応答データセットJAQKET[鈴木ら 2020]を用いた日本語質問応答システムの正解率を競うライブコンペティションです。 期間中は配布された評価データを使ってリーダーボード上でスコアを競い合いますが、当日は配布されていたものとは別の評価データが配布され、その場(制限時間2時間以内)で正解を予測する必要があります。 期間中のリーダーボード データ 以下のデータが配布されています 訓練データ: 13,061件開発用データ1: 995件開発用データ2: 997件リーダーボード用評価デ
TOPTECH BLOG【Kaggleコンペふりかえり】Riiid! Answer Correctness Prediction こんにちは AIチームの戸田です 本記事では本日終了した、KaggleのコンペRiiid! Answer Correctness Predictionのふりかえりを行いたいと思います。 開催中のテーブルデータコンペにまともに取り組んだのが初めてなので、もし間違いなどございましたらご指摘いただければと思います。 コンペ概要 オーナーはRiiidLabsという韓国のAIスタートアップで、Santa TOEICというTOEICの学習アプリを提供しています。今回扱うデータもこのアプリのものだと思われます。 コンペティションでは、ユーザーが出された問題に正解できるかを、ユーザーの行動履歴から予測します。気をつけたいのは、単純にある問題に対して回答できるかの予測ではなく、ユ
こんにちは AIチームの戸田です 先日、KaggleのCornell Birdcall Identificationというコンペに参加し、参加報告ブログを掲載させていただきました。使用した手法にこちらのライブラリを使ったノイズ除去を用いていたのですが、今回その内部の働きを勉強したので共有させていただきたいと思います。 スペクトラルノイズ除去 使用されていた手法はスペクトラルノイズ除去と呼ばれるそうで、ノイズ部分の信号をもとの音源から差し引くことでクリアな音源を実現します。モーター音や風の音など、固定ノイズや緩やかに変化するノイズの除去に効果的です。 Audacityというフリーソフトでも内部で使われています。 以下から実際にpythonでの実装を通じてスペクトラルノイズ除去の処理の流れを解説していきたいと思います。 データはCornell Birdcall Identificationのデ
こんにちは AIチームの戸田です 本日、KaggleのコンペCornell Birdcall Identificationが終了しました。私も参加していたのですが、結果は167位で、残念ながらメダル獲得には至りませんでした。とはいえ初めてきちんと取り組んだ音声データを扱ったコンペティションで、色々学びがありましたので今回はそのふりかえりをしたいと思います。 コンペ概要 鳴き声から鳥の種類を推定する音声処理タスクとなっています。スコアはmicro averaged F1で計算します。 今回のポイントは以下の3点だと考えています 1. "nocall"の予測 対象クリップ内に鳥の声が存在しない場合"nocall"というラベルをつけます。これだけならばピッチのしきい値などの対処方法があるかもしれないのですが、学習データに無い鳥の鳴き声がする場合でも"nocall"と予測する必要があります。 2.
こんにちはAIチームの友松です。 本記事では、ElasticsearchでSudachiとベクトル検索を組み合わせて使う方法について2回に分けて解説を行いたいと思います。今回はSudachi導入までを行いたいと思います。 Elasticsearchにおける文書検索 analyzerについて analyzerはcharacter filter, tokenizer, token filterの3つで構成されています。analyzerは文書が与えられるとcharacter filter → tokenize → token_filterの順で解析を行います。 character filter character filterはtokenizerに渡す前の前処理として文字ベースのfilterを行います。組み込みのcharacter filterは現時点で3つ存在します。 mapping-char
こんにちは、AIチームの友松です。前回はElasticsearchにanalysis-sudachiを組み込み、挙動を確認するところまで書きました。今回はさらにベクトル検索機能を追加し、両方を組み合わせて使用します。 ベクトル化サーバーの構築 ベクトル化検索にはBERTを用います。 こちらの記事を参考にさせていただきました。 https://github.com/Hironsan/bertsearch https://qiita.com/shimaokasonse/items/97d971cd4a65eee43735 ベクトル化サーバでは文章をrequestとして送るとBERTのベクトルが返却されます。ベクトル化サーバーはbert-as-serviceによって実現します。最終的なディレクトリ構造は以下のようになります。elasticsearch部分は前回の記事と同じ構成です。ここではber
次のページ
このページを最初にブックマークしてみませんか?
『株式会社AI Shift』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く