英語帝国を打倒しよう

言語の壁に計算機で挑もう!

投資以外(Non-Equity)でお金が出るプロジェクト支援へのポインタ

僕らのような自分らのソフトウェアプロジェクトを事業化したいと思っている人が受けられる支援について最近調べていて、見つけたものを後続の人のためにまとめている。あくまでリンクがあることに意味がある記事なので、詳細は各支援先のHPをよく参照しよう!

医療系や環境系はその他の資金が色々ありそう。この記事は我々(吹き替えのための統合環境)が応募できそうなものを対象にしている。

インターンなど、ソフトウェアエンジニア一般に対しての@kumagiさんが書かれた記事はこちら→ 若者向けソフトウェア人材おすすめビルドN選 #駆け出しエンジニアと繋がりたい - Qiita

サイボウズラボユース

  • 2024年の締め切り
    • 通年
  • 支援金額
    • ~103万円

https://labs.cybozu.co.jp/youth/requirements.html

未踏

  • 2024年の締め切り
    • 3月13日(IT), 4月5日(アドバンスト
  • 支援金額
    • 300万円、1500万円
  • 期間
    • 半年程度
  • 個人、チームが対象

https://www.ipa.go.jp/jinzai/mitou/index.html

覚醒

名が通った研究者がPMに名を連ねている。

  • 2024年の締め切り
    • 5月7日(10~12月にもあるかも)
  • 支援金額
    • 300万円
  • 期間
    • 7か月
  • 個人が対象(今年から

https://kakusei.aist.go.jp/r6/

NEDO Entrepreneurs Program

Accompany Runnerという人が25人位いるというところが特徴的に感じた。Accompany Runnerに結構色んなバックグラウンドの人が居る

開拓コース

  • 2024年の締め切り
    • 2月26日
  • 支援金額
    • 300万円
  • 期間
    • 12か月
  • 個人が対象

https://nep.nedo.go.jp/kaitaku

躍進コース

  • 2024年の締め切り
    • 4/18
  • 支援金額
    • ~500万円 or ~3000万円
  • 期間
    • 12か月以内
  • 基本的には法人が対象。「カーブアウト」ってのも、事業会社が一部を別の会社として独立させることだと思った方が良さそう

総務省:ICTスタートアップリーグ

異能vationの後釜らしい。

  • 2024年の締め切り
    • 3月31日
  • 支援金額
    • ~300万円 or ~2000万円
  • 期間
    • 8か月
  • 採択件数
    • それぞれ20件ぐらい?
  • グループOK

https://ict.startupleague.go.jp/

1stround

  • 2024年の締め切り
    • 6月3日 or 11月ぐらい?
  • 支援金額
    • 1000万, hiraku gate
  • 期間
    • 半年程度
  • 起業し3年以内かとかかな

https://www.1stround.jp/

foundX

  • 2024年の締め切り
    • 四半期の特定の月 (3, 6, 9 ,12 月) の1日が締め切り
  • 支援金額
    • 0円 (場所とメンタリング
  • 期間
    • 9か月
  • 注意
    • 休学してプロジェクトにコミットする場合は共同創業者として登録が可能です。ただし学業を続けながら起業をする場合は採択できません。
    • チームメンバー(共同創業者と従業員)の数が合計 4 名以下

異能vation

2022年度で一旦終わりで、今はスタートアップを作ることにフォーカスしているらしい(ICTスタートアップリーグ)

  • 支援金額
    • ~100万円 or ~300万円
  • 期間
    • 4か月 or 1年

本プログラムについて|異能(Inno)vation

最後に

修士位のメンバーでやろうとすると、お金がいる。しかし、全員が事業化を強く意識しているわけではなく、VCから調達して~~というのもしばらく難しそうで、こういうプロジェクトが必要。

こういうプロジェクトを作ってくれた方々、維持している方々に感謝。

to-do

  • 場所が借りれるか、資金調達いくらまでなら可能か等の条件を載せる

SXSW2024参加録

東大の産学協創推進本部がSXSWというイベントでの展示を支援してくれる「Todai To Texas」に採択され展示を行いました。

SXSW会場の様子

我々のチーム「DubGuild」のページ

SXSWとは

SXSWは、世界100カ国以上から約40万人が参加する大規模なアメリカの展示会です。著名な企業幹部が多数訪れることで知られ、過去にはイーロン・マスクセルゲイ・ブリンマーク・ザッカーバーグなどが参加し、今年はOpenAIのVPも来場したそうです。また、airbnbUberTwitterといった企業がここからローンチしたことでも有名です。

我々の展示

産総研の覚醒プロジェクトで採択されている「日本語版の世界観を崩さないアニメの吹き替え」を体験できるブースを用意しました。

参加者には英語でキャラクターのセリフを話してもらい、その発話を私たちのシステムで日本語に変換し吹き替えアニメを制作するというものです。

展示の様子

また、我々が開発している吹き替え用ツールについての説明をしました。

SXSWでの体験できたこと

SXSWでは、様々なイベントに参加しました。講演会(Session)、メンターとの一対一セッション(Mentor Session)、業界関係者とのネットワーキング会(Meetup)、展示会(Creative Industrial Expo)などです。

Session

登壇者らが自分の経験や、自分が作っているプロダクトについて話していたり、議論していたりするのを聞くというものです。

Crunchyrollの創業者のKun Gaoが創業時の様子について語ってくれていて、それがとても面白かったです。また、Session後にKun-sanを捕まえて繋がることができました。

Mentor Session

SXSWが雇ったメンターと15分間一対一で話せます。400人もいてメンターは豊富なのですが争奪戦が激しすぎて、僕らのプロダクトと直接関係がありそうな人の予約は取れませんでした。

ビジネスについての一般的な話だったり、アメリカではどのようなstreamingサービスが一般的なのか話す、という場になりました。また、Unityの人と僕らのプロダクトをゲームにどう応用するかについて議論できたのは良かったです。

余談ですが、予約サイトが途中までぶっ壊れてたり、予約に来ない人が多すぎて大体30分になっていたりしてアメリカを感じました。

MeetUp

業界の関係者が集まって交流会をする場です。お菓子がそれぞれのテーブルにあり、立食パーティーのような雰囲気でした。

自分はアニメーターのイベントに参加したのですが、ガチのアニメーターばかりで雑談をしていたら終わりました。アメリカのパーティにぶち込まれてる感じで、話すスピードとかも速い人が多く結構大変でした。

Creative Industrial Expo

色んな企業や団体が展示をしている場所です。我々もここで展示をしていました。

他にもAI系の会社があるので見て回ったりなどしました。

ブースにはメディア、他の展示会の関係者、まだ大きくない会社の偉い人で顧客になってくれそうな人などが来ていました。

得られたもの

狙っていた偉い人と繋がれたのが良かったです。

また、行くまでは予期していなかったことなのですが、JETROの中の我々のプロダクトと関係がありそうな組織や韓国のアニメ系のイベントを知ることができました。

また、「アメリカに行ける」というのを餌にして今のチームに足りない部分を補ってくれるメンバーに来てもらえ、アドバイスを貰えたの良かったです。

払ったもの

展示をやるのが結構大変で、自分たちが見積もっていた以上の時間がイベントの参加準備に必要でした。チームで500時間ぐらい使ってると思います。

反省点

我々がここに来るにはまだ早かったか....?

売り物がまだできて無かったので、歯がゆい思いをすることは多かったです。その場でいい反応をくれた人も基本的にイベント後には正気に戻って返信もくれなくなるので「この場で覚えて貰って将来に繋げる」というのは簡単じゃないなぁと感じました。なんならこっちも誰がどんな反応くれたか結構忘れましたし、自分以外の展示についても殆ど覚えてないです。

また、must-haveから作ろうとしなかったため開発が混迷したのは良くなかったです。

その他

個人的な感想ですが、「SXSWに参加している」という事実が重要であり、SXSWをどのように活用するかをもっと考え、展示に関してはあまり力を入れ過ぎなくても良かったかもしれません。また、普段の開発と比較して、「技術力よりもマンパワー」を要するタスクが多かったため、その点には注意が必要だと感じました。

学会行ったら現地のオタクが香港のメイド喫茶に連れて行ってくれた件

自然言語の国際会議「PACLIC37」は香港のPolyU(香港理工大学)という大学で開催された。
会議が終わった後日本人と話していると、日本語に気付いたのか謎のラブライブの缶バッチを付けた人(以降、Aさん)が話かけてきた。

なんでも、Aさんはアニメ好きで日本語を勉強中とのこと。早速自分たちが開発しているAI吹き替えシステムを聞いてもらったり、アニメについて語り合って意気投合。discordのidを交換して色々なやり取りが始まった。

日本に行って買いそろえたらしい。

話していると、Aさんは土曜に日本語の試験を控えているとのこと。自分も香港の人が日本のアニメ文化をどう接種しているのか気になっており、日本語勉強会+香港アニメ文化勉強会的な感じで、香港の旺角(Mong kok)を案内してもらえることになった。

Aさんは「旺角は日本の秋葉原と原宿と渋谷を集めた感じです」と言っていた。旺角は人が多い場所という意味。統治時代には香港島にイギリスからやって来た人達が住みはじめ以降も先進的な街が作られていった一方、半島側の旺角は地元の人がたくさん集まる場所でありつづけているらしい。人が結構多かった。

 

Mong kok

彼がまず最初に案内してくれたのはこの赤いビル。赤はあまり香港のビルには使われないから珍しいのだそう。中は非常に綺麗で、おしゃれ。渋谷のヒカリエにオタクショップが入っている感じで面白かった。2フロア位がオタクゾーンになっていて、他の売り場とまじりあっている。(2枚目は非オタクゾーンにあった韓国のメガネ屋)

日本企業だと、らしんばんとかが入っていた。

推しの子は中国では見れないらしく、香港では見れるらしい。

オタク・ヒカリエ

 

 

続いて、香港の昔ながらのカオスなビル「信和中心」を案内してもらった。ここが凄く面白い。

建物の雰囲気としては秋葉原のニュー秋葉原センターとかに近い。低い天井と細い道があって、中に小さいオタク商店が並んでいる。

1フロアに7,8個で4フロア位?一つ一つの店も、何かの専門店という感じがしない店が多くて、とにかくカオス。一つの店は6~8畳ぐらい?
どんな商品が現れるか分からないから、とにかくワクワクすると思う。15年ぐらい前の秋葉原にはこんな感じの店があったのかも?

 

ここで、Aさんの友人二人(ここでは、Bさん、Cさんとする)と合流してメイド喫茶に行くことに。

Aさんが有能すぎて、注文するメニューとかも考えてくれていた。本当に感謝したい。

全部(飲み物、ごはん、デザート、チェキ、ライブ)を頼んだ。

まず、メイドさんが国際色豊か(?)で驚いた。どこから来ているのかは分からないのだが、目の色や肌の色は人それぞれ違うなぁと感じる感じ。PolyUに通っているメイドさんもいて、留学生っぽかった。
言語についても、広東語、日本語、英語、(マンダリン?)が混じり合って使われ、超絶カオスな空間だった。(自分がいた為にカオスになった可能性はある)日本語は結構使われていて、挨拶とかは日本語でしてくれた。店内に日本語の教科書があって、その日にはいなかったのだが勉強している人もいるらしい。
また、ライブの歌は日本語で歌ってくれていた。めちゃくちゃうまい。Bさんは日本語の発音がめちゃくちゃうまいのだが、アニメを歌をよく聞き、歌うオタクだったのでこういうのは役に立つのかもしれない。

積みあがっていた謎の本(日本語の教科書もある)

オムライスとケーキを頼んで、綺麗な絵をかいてもらった。

ケーキは届いてから、「何か絵を出してくれれば書いてくれる」という感じで、初音ミクが台湾と香港でコンサートをした時のイラストを書いてもらった。

この頭についているの花は何か香港に関係してるのかな~と思っていたのだが、台湾由来らしい。台湾の国旗は桜とはまた別の花で、なんかユリっぽい花だった。

Cさんは自分で絵を描けるオタクらしく、自分で書いた絵をかいてもらっていて、強さを感じた。

 




 


メイドさんがライブをやってくれたのだが、香港で聞くこれがマジで良かった。

「自分が歌ってほしい曲をリクエストして、メイドさんが知っているか判定する」という仕組みで、これに少し戸惑ってしまった。日本語の曲名をいくつか出してもメイドさんは特に知らなさそうな感じで曲を全然決められていなかった。難航した挙句、自分の曲はonly_my_railgunになった。(全部英語なので通じた)

自分が知っている曲が流れるかな~と悩んでいたところでonly_my_railgunの後に流れてきたのが梅とらの「威風堂々」。大好きな曲なので興奮していたところ、日本語で曲が流れ始めて更に感謝。メイドさんが出てきて、歌を歌うのかなと思っていたら、なんと踊りを披露してくれた。タトゥーを右肩に入れて、それを大切にしている方らしく、右腕がはだけたメイド服の方だったのだが、その踊りのカッコいい事この上なかった....

その後、「心做し」をメイドさんが歌ってくれてた。まず日本語が上手すぎるし、自分の好きな曲なのでしんみり終わり非常に良かった。

終わってみて分かったことだが、香港のオタクたちは日本語の曲を日本語のまま聞いてくれていて、曲のタイトルとかは広東語で取り扱われるという感じのようだ。
僕らも洋楽とかは楽しめるし、音楽はそこそこ言語の壁を越えられるんだなぁと感じた。

www.instagram.com

 

その後は私のお土産探しにみんなが付き合ってくれた。どうも香港という場所は色んなものが中国とか日本から入り込んでくる場所なのだが、自分の土地の商品というものがあまりないようだ。
面白かったのが、彼らが言ってた「薬は中国のモノを使って、サプリは日本のモノを使う」という話。よく考えると、西洋医学と未だに戦えている中国の薬って凄い

 


その他に思ったこと

友人の日本のメイドさんで、シール系のタトゥーが凄く好きな人を思い出した。タトゥーは多分、何かを愛する強いオタク的欲求と相性がいいのかもなぁと思った。

AさんによるとMong kokには21個のメイドカフェがあるらしい。本当かよ?と思ったが、歩いている間にいくつか他のメイドカフェが見つかったので本当かもしれない。Google mapで適当にググると10軒ぐらいがヒットする感じ

 

理工系の大学生で、これだけ言語がめちゃくちゃできるのはえぐい。ただ、話してみると、香港は理工系はあんまり強くないというようなことも言っていた。とくにPolyUは理工ということだが、ヘルスケアや生物系を深く取り扱ってるらしい

 

この人たちが日本好きであることを差し引いて考える必要があるが、「香港の故郷は日本」というジョーク(?)を教えてくれた。これは、日本人が年末年始に地元に帰ることから来ており、日本の年末年始シーズン(彼らは冬休みだが、故郷に帰る時期(旧正月)ではない)によく日本に行くかららしい。

 

話している感じ、多分香港は中国の中で最も日本のオタク文化を摂取してくれている場所で、多分香港がMAX。ただ、上海のアニメイベントには一日30万人以上来ているらしい。やっぱり南の方の地域の方はそこそこオタクいそう。上海のオタクとも会ってみたいなぁ。

 

今回の出会いは本当に奇跡的だった。Aさんに深く感謝したい。

 

オタクよ永遠なれ



 

 

 

 

 

 

国際学会に行くので名刺とウェブページを作る

* ウェブページ

githubpagesで作るか~となった。とりあえずこれを参考にした。どうもthemeというボタンがgithubのpagesから消えているっぽく、古い記事はあんまり参考にならなかった。

https://www.youtube.com/watch?v=D9CLhQdLp8w

 

* 名刺

デフォルトは9.1 cm × 5.5 cm らしい。とりあえずgoogle slideで作る

入力と出力から辿るtransformer(計算量等)

はじめに

transformerの仕組みについてはほとんど勉強したことが無く、どうも理解が怪しかったので改めて勉強し直すことにしました。特に気になっていたのは、並列化と推論時の計算量です。それぞれ以下のような話をしていた時に顕在化しました。

  • 友人Aとの会話
    • 自然言語処理が専門ではない友人にモデルの歴史を雑談程度に話していて、その時に、「LSTMとかの逐次的な系列変換モデルからtransformerになって、並列処理ができるようになったから凄い事起きたんだよ~」と言ったら、「どうやって並列化してるの?」と聞かれてごまかした。
  • 先輩Bさんとの会話
    • Bさんとの会話の中で「transformerの推論はO(n2)で~~(うんぬんかんぬん)」という話が出てきた。その時にあれ?そういえばなんでn3ではなくn2なんだろう?と思った。「なんか上手くやるとn2になる」みたいな話があった気がするのだが、完全に忘却していた。

これまでの自分の勉強を振り返ると、Attention機構の数式の中身などに気を取られて、それぞれの入力と出力が何なのかや、全体として何をしているかの理解が曖昧になっていた気がします。そこでこの記事では、入力から出力まで流れる行列の「サイズ」に注目して計算時間と外観を追います。

結論

  • 並列処理について-> # 入力から辿る「transformerモデルが解く問題」へ
  • 推論時の高速化について→ # 推論時 へ

transformer(訓練時)

transformer原著の図の矢印を辿りながら、行列のサイズと計算量を見ていきます。とりあえず、バッチサイズとヘッドについては考えないことにします。

まず、原著に登場するパラメータで、行列のサイズに関係するものを並べます。

  • d(d_model): embedding layerとモデルの中のsub-layerの出力サイズ。論文では512。この記事ではdと表記
  • d_ff: feed-forward層の次元数。論文では2048

また、入力トークン数をnとして全部の流れを追ったのがこちらの図です。以下では、それぞれの部分について細かく見ていきます。

Transformer(Vaswani, Ashish, et al. "Attention is all you need." Advances in neural information processing systems 30 (2017).)

encoder

入力としてトークン列(トークン数,1)が入ってきた後、モデルの中に入って来てからはずっと(トークン数,d_model)の行列で流れていきそのまま出ていきます。

encoder全体

入力部

初めに入力のトークン列X((トークン数,1)の整数列)がembeddingされ(トークン数,d_model)のHになり、これにpositional-encodingが加えられています。

  • 入力(inputs)は単語を表す整数列だと思うことにする。整数列は次の様に単語を整数に直したものである。(「I want to go to college.」-> 「5, 10, 23, 1, 23, 71」)
  • 計算量は O(n) (nはトークン数)

入力部

Multi_Head Attention

入力と3つのW行列の積をとり3つの行列を作成。注意機構を計算しています。

  • (トークン数,d)の行列に(d,d)の行列をかけ、K,V,Q(サイズは(トークン数,d))を作成
  • Attentionの計算 :  softmax(\frac{QK^{T}}{\sqrt{D}})V
  • K,V,Qの作成(行列積)が O(d^{2} \times n) Q×K^{T} softmax(\frac{QK^{T}}{\sqrt{D}})のVとの行列積等が O(d * n^{2})
  • normalizationは O(n*d)

Multi-Head Attention

次元数方向(d,d_model方向)をHead数(h)個ずつに分割し計算します。一回ずつの計算は[tex: n2*(d/h)]となり、これをh回行うので理論上の計算量は変わりません。オーバーヘッドはそこそこありそうですが...

  • softmaxの関数の仕様のため多様な情報を引き出すためにこうしているという話がある(自然言語処理の基礎、p151)

Head

FeedForward

一般的な線形ネットワークです。注意機構と違い、各トークンが独立して処理されています。

  • 1層のネットワークで式は Relu(H'' × W_1) × W_2
  • 計算量は H'' × W1と、 (Relu(H'' × W_1)) × W_2共に O(n * d * d_{ff})
  • この層が具体的にどのような役割を担っているのか、私にはよく分かっていない。ここで説明する代わりにリンクを置いておく。

Feed_forward

encoderの計算量まとめ

計算量的には、 O(d^{2} * n + d * n^{2} + n * d * d_{ff}) になります。d,d_ffは数百~数千位、nは用途次第ですが一文の翻訳とかなら長くても数百程度になります。ハードウェア的な制約を無視すれば理論上どんな長さでも入力とすることができます。

decoder(訓練時)

入力から最後のlinearに出るまで行列サイズはencoder同様(n,d)です。最後のlinearの計算で(n,d)から(n,vocabsize)に変わります。

  • 最後のlinearでサイズをd(d_model)から単語の種類数(vocabsize)に変える
    • 例えば、5000種類の単語で出力を構成するとしたら、1tokenあたり5000個の数値を出し、softmaxをかけてそれぞれの数値がの5000種類それぞれの単語の確率だと考える
    • 計算量は、 O(n * d * vocabsize)
      decoder

Masked Multi-Head Attention

基本的な計算はMulti-Head Attentionと殆ど変わらないのですが、文全体を同時に計算するために QK^{T}積の一部をマスクするという仕組みを持っています。

Masked Multi-Head Attention

transformerの並列化の仕組み

transformerは先の単語を予測するタスクなのに文全体でモデルに一回しか情報が流れないという構造を持っています。(# 入力から辿る「transformerモデルが解く問題」で後述)

訓練時に Q*K^{T}(=A)の要素の一部を消すことで先の単語の情報が入らないようにしています

Multi-Head Attention

入力の K',V' (サイズは(n,d))はencoderから来て、それらと \bar{H''}から来た QでAttentionを計算しています。

  • エンコーダー側の入力とデコーダー側の入力のサイズが違う場合はpaddingなどすればよいのであまり問題ではない
  • 計算量はencoderと同じ

decoderのMulti-Head Attention

Feedworward

encoderと同じなので省略

計算量についてのまとめ

headを考えないと O(n * d * vocabsize + d^{2} * n + d * n^{2} + n * d * d_{ff})となります。multiheadになると、 softmax(\frac{QK^{T}}{\sqrt{D}})部分の計算が変わりますが、計算量の理論値は変わらないでしょう。

入力から辿る「transformerモデルが解く問題」

transformerは『一本の入力文( x:「私は猫を飼っている」)と途中までの出力文「I have a」( y_{0-2})から、「cat」を予測する』という問題(i=2)を、すべてのiについて同時に並列に解いています。数式に書き表すと以下の様になります。

モデルに対する入力は『x:「私は猫を飼っている」』ではなく、『 x:「私は猫を飼っている」+  y_{0-2}「I have a」』となります。

  • なんとなく、「入力を入れると出力が出る」みたいな感覚があったのですがまずかったです。transformerも本質的には、「次の単語を予測する」だけの機能を持っていて、それを並列化している、と思うと腑に落ちました。
  • この並列化はMasked Multi-Head Attentionで上手い事やって、文章全体を一回で扱えるdecoder機構を作った、と言えると思います。

推論時

入力時は上手く並列化して文全体を一回モデルに流すだけで計算出来ていますが、推論時はそうはいきません。decoderモデルを出力単語数分だけ回すことになり、 O(d^{2} * n + d * n^{2} + n * d * d_ff + n * d * vocabsize)がn回かかり、nに注目するとn3の計算量がかかります。しかしながら、実はここでもうまいことやってdecoderモデルの計算がO(n2)より軽くできます

  • こちらの記事(Lei Mao Transformer Autoregressive Inference Optimization)に説明されていることを解説する。
    • これがPytorchなどの標準実装になっているのかはよく分からない(todo)
  • n2かかる部分というのはそもそも、Attention機構の QK^{T}の行列積と、これから出てきたものにVをかける部分なので、[tex: softmax(Q{n+1}K{n+1}^{T})V_{n+1}について考える。
  • 今求めたいのは、この計算結果の中で一番下の行だけであることを考えると、実は計算しなくてよい部分が多く、O(n)に落ちる

おわりに

最初の疑問に今自分が答えるとすれば以下のようになる。

  • 友人Aとの会話
    • transformerは従来のモデルと比べてモデルの能力自体は失わずに文全体を同時に扱う機構を持っているため高速に計算できる
  • 先輩Bとの会話
    • 推論時は実は計算しなくてよい部分が多く、decoderモデル一回当たりの計算がO(n)に落ちていて、文全体でO(n2)になっている

あんまり自信はないんで間違いがあったら教えてください。

空間計算量

系列変換モデルとattention機構

todo

GPT

todo

BERT

todo

OverleafでLuaTeXで日本語を使う

Tex弱者なので、世の中にはもっと良い情報があるかもしれないが一応....


overleafはデフォルトのプロジェクトだと日本語を上手くコンパイルできない。で、ググると最初の方にコンパイラをpdflatexからlatexにし、latexmkrcを作成して云々....という様な記事が出てくる。

 

これとか。

Overleafを使った日本語論文の作成 #TeX - Qiita

 

しかしながら、 この記事にもある通り、overleafの無印latexコンパイラは画像貼り付けるとバグる事が多い気がする。

 

コンパイラをLuaTeXにして、documentclass(最初の一行目とかに書く奴)を

\documentclass{ltjsarticle}

とすると、日本語をサポートしてくれるし、LuaTeXが使える。latexmkrcはいらない。自分はまずこれから試すべきだと思っている。