Open GENZITSU opened 2 years ago
BERTのデファクトな事前学習手法であるSimCSEを改良したDiffCSEの論文解説資料。
提案手法に至る背景からablation studyまでわかりやすくまとめられている良資料。
以下重要そうな部分の抜粋。
DiffCSEをJSTSデータセットで検証したレトリバのブログによると、若干ながらDiffCSEによる学習の方が良かったとのこと。
使用した、エンコーダのモデルはcl-tohoku/bert-base-japanese(表中のv1)とcl-tohoku/bert-base-japanese-v2(表中のv2)を使用しています。Generatorはbert-base-japaneseを用いる場合は、DistilBERTを用いており、bert-base-japanese-v2を使用する場合は、bert-base-japanese-v2を使用しました。
マスクプレディクションの箇所を予測する以上に効果の高い別タスクがなんかあるような気がする。
(SNLP2022)DiffCSE: Difference-based Contrastive Learning for Sentence Embeddings
BERTで文表現を得る際の事前学習手法SimSCEに角度マージンロスとトリプレットロスを導入した手法ArcCSE(@ACL2022)の解説資料
同勉強会で発表されたDiffCSEの解説資料と同様にとてもわかりやすいが、チューニング項目が多いからか精度はDiffCSEの方が良さげ
以下重要そうな部分の抜粋。
DiffCSEと比べて考えなければならないパラメータが多いのが難点だが、DiffCSEと異なりgenerator無しで良いのは良さげ。
角度マージンだけだと精度がどっと下がるのは、DiffCSEの背景と同じでdropoutだけの正例負例の作成に限界があるかということを物語っていそう。
ACL2022に採択されたfine-tuningによってBERTの潜在空間がどう変化するかを分析した論文の解説スライド
以下重要なところの抜粋
実務で何か使えるかというわけではないがBERTの性質が今後も解明されていくとよいっすね。
NeurIPS 2021に採択されたsoftmaxの出力分布と一様分布とのKL距離の勾配情報(GradNorm)から Out Of Distribution 検出を行う論文の解説資料。
分布内データの方が分布外データよりも勾配ノルムが大きくなることを利用して検出を行う。
正解ラベル無しでOOD検出を実施できるのは実務的にありがたそう。
組織の生産性を高めるために意思決定のスピードと質をどのように上げていくかを解説したGMOペパボのマネージャー研修資料(2022年9月27日)。
以下重要そうなものを抜粋
生産性は仕事量 → 期待付加価値 → 実現付加価値の3 layerに分かれている
多くの場合、意思決定のスピードと質が生産性を下げる大きなボトルネックになる
集団が大きくなるにつれて個々人のアウトプットの総和よりも集団のアウトプットの方が低くなってしまうというリンゲルマン効果が存在
また個々人のへの期待が不明瞭である場合に社会的手抜きが発生することも
意思決定をする方法や場を明確に規定する
意思決定に関するロジックや情報を意識し、意思決定の質を高めていく
リンゲルマン効果や社会的手抜きという概念を初めて知った。
各mtg参加者それぞれがなんらかの意思決定を常に実施できるような体制を組んでいきたいところ。
単語ベクトルを複数のハッシュidから得られるベクトルのsumで表現するBloom embeddingsを解説している資料。 Bloom embeddingsをfastTextに応用したfloretというツールも作成しており、気概がすごい。
通常の単語ベクトルは各々の単語にIDを割り当て、そのIDに格納されているベクトルを取り出すが、Bloom embeddingsでは単語をハッシュ化しそのidから得られるベクトルを利用する。
ハッシュ化なので当然、別単語なのにIDが被るということが発生するが、ハッシュ化を複数回適用しそれらの足し合わせを最終的な単語ベクトル見なすことで別単語なのに同じベクトルになるということを避けられる。
spacyにはこれを活用したHashEmbeddingがそなわっており、単語をORTH, PREFIX, SUFFIX, SHAPEの4要素に分解してbloom embeddingsを得ることで、ベクトルテーブルの大幅な省メモリ化を達成している。
floretはこのbloom embeddingsをfastTextに活用したもので通常単語本体とサブワードで分割して保持しているテーブルを合体させhash trickを活用することで大幅な省メモリ化を行っている。
2M word vectors and 2M subword vectors with 300 dimensions, you’re looking at 4GB+ data, which is definitely prohibitive in many cases. with the hashing trick, it’s possible to both greatly reduce the size of the vector table and also support subwords. We can have performant vectors with subword support in under 100MB with just two small changes to fastText:
そしてこのようなembedding手法を用いると、未知後やスペルミスに対してロバストになる上に、文字列長が長いような単語で構成される言語系におけるタスクの性能が上がってリモするらしい。
単語ベクトルをエッジマシンや低リソースマシンで利用するさいに省メモリというのかなり大きな利点。
チュートリアルをみるとベクトルの類似度に若干の不安を覚えるが、どんな単語を入れても何かしらのベクトルが帰ってくるというのは使い勝手良さそう。
月5ドルの自作サービスで最初の500人を集めるまでにやったこと
InkdropというMarkdownノートアプリを個人開発している筆者が500人長の課金ユーザを獲得するまでに実施した施策の紹介。
特に勉強になったものだけ抜粋
1. 大きな広告に頼らない
自身の日頃の発信を広告塔にしつつ、既存ユーザーのサポートに集中
緩やかな成長だからこそ、個人で見れる範囲内のサポートでサービス品質を落とさずに済む
3. ユーザフォーラム運営に時間をかける
フォーラムの質疑を丁寧にこなすことで、将来のユーザーサポートにかかる手間を削減できる。
4. ロードマップを公開する
ロードマップを公開することでユーザーのを期待を掻き立てる。
5. 課金ユーザを特別扱いする
以下のようなことを実施したとのこと。
6. 戦略を語る
作者自身がプロダクトの一部であることを理解して振る舞う
7. 競合をすべて無視する
自分自身が解決したい問題に集中する
8. 不完全を受け入れる
不完全な部分を受け入れて定期的にリリースを行う。
コメント
学びが多い。
出典
月5ドルの自作サービスで最初の500人を集めるまでにやったこと