StatsBeginner: 初学者の統計学習ノート

統計学およびR、Pythonでのプログラミングの勉強の過程をメモっていくノート。たまにMacの話題。

LightGBMにおけるカテゴリ変数の扱い方

LightGBMにおけるカテゴリ変数の扱いについてググっていたら、以下のような投稿があった。 [SOLVED] How exactly does LightGBM handle the categorical features? | Kaggle この投稿のなかで、いろいろ参考になるリファレンスが貼られている。 max_cat_to_o…

MacでのChrome AppsのTwitter (X)アプリのインストール

今、Macでツイッター(X)のアカウントを複数運用するなら、Chrome Appsのアプリが最適だと思っていて、それを再度インストール(正確にはMacの別のユーザアカウントにインストール)しようと思ったら方法が分からなくて困ったのでメモしておきます。 説明す…

“All You Need”論文のベースモデルに近いスペックの英日翻訳Transformerを作ってみた

先日から英日Transformerの学習結果の報告を何度か書いてますが(エントリ1・エントリ2・エントリ3)、AWSでA100というGPUが8枚使える最高スペックのインスタンスが空いたので*1、コーパスとモデルを少し大きくして、Googleの有名な“Attention is all you ne…

英日翻訳Transformerを少しだけ大きくしてみた結果

研究でTransformerを使いたいので(去年ちょっと実際に使いましたが)、基本から勉強しようと思い、先日自分でTransformerに英日翻訳を学習させてみたのですが(エントリ1・エントリ2)、GPUを複数枚並列で動かせる環境を手に入れたので、コーパスとモデルを…

AWSの深層学習用GPUインスタンスのスペックと価格を一覧化した

つい先日も似たようなエントリを書きましたが、AWSのサイトでいまいち一覧化された情報がないことに怒りを感じたので、表にまとめました。 インスタンスを起動(作成)する画面からインスタンスの比較表をみることが出来ますが、そこではGPUの製品名やメモリ…

PyTorch初心者のメモ

以下は、PyTorchでのニューラルネット構築について、学んだ基礎的事項のメモです。 nn.ModuleというのはTransformerを含めたニューラルネットワークの部品を意味していて、nn.Moduleの__call__メソッドはforwardメソッドを呼ぶようになっているので、nn.Modu…

なんか凄そうな日英対訳コーパスを発見

LASER/tasks/WikiMatrix at main · facebookresearch/LASER · GitHub Wikipediaから作られた多言語の対訳データで、英語と日本語の組み合わせをみると85万1000件ある。 これは中身も少し整理してみたが、結構品質は高い。明らかに変なデータも混じっていたり…

DataParallelでの複数GPUの並列化が上手くいかない(PyTorch)

単なる作業経過のメモです。 AWSで、gクラスのインスタンスのvCPU数上限緩和を申請したら通りまして、複数GPUのインスタンスが使えるようになりました。 そこでGPU4枚のインスタンスを立てて、以下のような情報を参考に、先日構築したTransformer翻訳機にと…

英日翻訳の混合コーパスとJParaCrawlで機械翻訳の品質を比べてみた

※コーパスを「自作」したとは言えないのでタイトルから「自作」を取りました 先日、小型Transformerで英→日の機械翻訳をやらせてみた(先日のエントリ)のですが、その際にコーパスは、いくつかの無償配布コーパスを処理して独自に再編成したもの(合計約128…

AWSのディープラーニング用インスタンスを検討する

Google Colabの環境は気に入ってるのですが、操作しないと90分でランタイムが切断されるルールや、Pro+に入っても24時間以上は回せないルール、さらには実行中にGoogle Driveに書き込めなくなったりする不具合などもあって、長時間の学習ではストレスが溜ま…

小型のTransformerに英日翻訳をイチから学習させてみた

翻訳機を自作してみた ChatGPTやDeepLの元になったTransformer*1をつかって、英語から日本語への翻訳を学習させてみました。 とりあえず現段階で、いくつかの英文を翻訳させてみた結果が以下のとおりです(青字が機械翻訳)。 Your time is limited, so don’…

Google Colabでネット接続が切れた時

Google Colabでニューラルネットの学習中に、いかに処理を中断させないかで悩むことは多いと思います。ググるとよく紹介されているのは、 12時間や24時間でランタイムがリセットされてしまう問題:これはどうしようもないので、それまでにモデルや設定を保存…

無償配布の日本語・英語対訳コーパスのデータを綺麗にする

★めぼしいコーパスをまとめてダウンロードしてクリーニングして統合するPythonのコードを最後にのせてます。 ★少しソースを増やして、最終的には後日のエントリに書いてあるようなコーパス構成にしました。 日英対訳の(なるべく)綺麗なデータを得たい Tran…

Jupyter Notebook/Jupyter LabがMacでちゃんと開くようにconfigを設定

Jupyter Labを使ってるのですが、起動しようとするとブラウザでちゃんと開いてくれなくて、変なHTMLファイルがテキストエディタで開くようになってしまいました。そのHTMLファイルに書かれてあるURLをブラウザに入れると使えるのですが。 これはconfigにデフ…

MacのAcrobatで見開きPDFを1ページごとに分割する

後でまた使うことがありそうなのでメモしておく。 見開きが複数ある場合は、まず、1見開き1ファイルに分割する 個々のファイルをAcrobatで開く ToolsのOrganize Pagesを開く Moreのメニューから「Set page Boxes」を開く インチで分かりにくければmmに変更し…

ChatGPTにプログラミングを教わるとは、こういう感じです。

ChatGPTとのやり取りで一番楽しいのは、やっぱり、プログラミングを教えてもらうことですね。 今回は、とあるアニメーションの作り方を教えてもらいました。下にそのやりとりを掲載しておきますが、コードの中身は読み飛ばして、文章でのやり取りの部分と出…

TransformerやAttentionの分かりにくい点についてのメモ

ChatGPTの「GPT」はGenerative Pretrained Transformerの略であり、TransformerというのはGoogleが2017年に発表した『Attention is all you need』という論文で提案されたディープラーニングの画期的なアーキテクチャで、その論文のタイトル通り「Attention…

Rで距離行列を求める高速な関数

Rでクラスター分析などをするときに距離行列を求める必要があるが、次元が大きくなると(万単位とか)けっこう時間がかかる。 で、 標準で入ってる{stats}のdist() {Rfast}のDist() {wordspace}のmatrix.dist() を比較してみたところ、3つ目のやつが一番速く…

configure: error: gsl-config not found, is GSL installed? ERROR: configuration failed for package ‘RcppGSL’

こういう環境構築系の作業をいちいち書いてたらキリがないのだが、ググってすぐに解決しなかったものについては、後で助かる人がいるかもと思ってなるべく書いています。 以下はAWS(Amazon Linux)上のRでの話です。 {Rfast}というパッケージを入れる際に{R…

Rの正規表現でURLを抽出

正規表現でURLを表現する方法は、ググるといろんな人がエントリにしているが、Rでやる場合は以下のようにする。 '以外のエスケープの\を重ねることや、perlをTRUEにするのを忘れないように。 grep('https?://[\\w!\\?/\\+\\-_~=;\\.,\\*&@#\\$%\\(\\)\'\\[\\…

文章を「カギ括弧に挟まれている場合以外は句点で区切る」のってどうすればいいの?

日本語のパラグラフをセンテンス単位に分割するのって、もちろんいろんなパターンをプログラムで書いていけばできると思うのだが、シンプルなコードでやろうとすると、どうなるんだろうか。 普通に考えると、 「。」で区切る 「?」や「!」でも区切る(これ…

AWSのR4.0.2に{devtools'}が入らない

AWSに設置したRStudio Serverで{devtools}のインストールに失敗し、以下のように依存関係のエラーが出る。(途中の行を省略している) > ERROR: configuration failed for package ‘textshaping’ > ERROR: dependency ‘textshaping’ is not available for pa…

Rで{snow}と{parallel}の並列化を少し試してみた

Rで計算を高速化したいとき、 なるべくベクトル計算にしてforで頭からみていくような処理を避ける 自作関数をコンパイルする 並列化(マルチコアの利用) などの手法があり、ベクトル化とコンパイルに関してはケースによって何が有効かというのは難しい。 た…

MeCabとRMeCabのインストール、NEologd辞書への変更、ユーザ辞書登録をやり直す(Mac OS)

形態素解析エンジンのMeCab(およびRMeCab)をEC2上の新しい環境に入れる必要が生じたので、 MeCabのインストール IPA辞書のインストール RMeCabのインストール NEologd辞書のインストールとシステム辞書の変更 ユーザ辞書の作成、コンパイル、登録 の手順を…

Rのplm::pgmm関数でError "system is computationally singular"が出まくった

{plm}パッケージのpgmmという関数でパネルデータの分析をしようとしたら、 system is computationally singular のエラーで推定できない。 plmパッケージに例題として入っているデータとモデルではふつうに推定できたので、たぶん分析しようとしているモデル…

Rで「自作関数に引数として与えたグローバル変数」を上書きする方法ってある?

Rで、自分で定義した関数内の処理のようなローカルなスコープから、グローバル変数を定義したり変更したりする操作をしたい場合は、「 > obj1 <- c("元々1", "元々2") > > myfun <- function(x){ + obj1 <<- c(obj1, x) + } > > myfun('追加') > > print(obj…

古典を読もうとする学生に「教科書から読め」と諭す必要はないと思う

昨日、ツイッターで「大学生のための100人100冊」という、いわゆる「必読書リスト」を紹介するツイートが流れてきました。20世紀の著作を集めたものなので、「古典」というほど古くないものも多いですが、でもまあ「古典」に近いものが多いとは言えるでしょ…

MacのKarabinerが削除できずターミナルでも"su: Sorry"が出るとき

MacでUSキーボードを使っている人が、漢字かなの変換をしやすくするのに、Karabiner-Elementsというソフトがよく使われている。で、そのソフトのアップデートが上手くいかず、アンインストールしてやりなおそうとして、うまく行かなかったという報告がネット…

「シャブ漬け」という比喩は世間でそれなりに使われている

吉野家の役員のくだんの発言については、特に非難したいとも擁護したいとも思わず、「生娘をシャブ漬けにしてる暇があったらうちの職場の近くに店をつくってくれ」ぐらいの感想なのだが(飲食店がほとんどないので)、「シャブ漬け」という喩えはそれなりに…

ステップワイズ法で特定の変数を残したい場合

私が住んでいる町では、「ステップワイズ法で、ただし特定の変数は残るようにした上で、最良のモデルを選択してほしい」と言われ、手法の妥当性を説明するのが難しいので気が進まないものの、やらざるを得ないことがあります。 ここにやり方が載っていて、 …