AI_ML_DL’s diary

人工知能、機械学習、ディープラーニングの日記

Kggle散歩(October 2020)

Kggle散歩(October 2020)

 

10月は、OpenVaccine(10/5:訂正10/6)とOSIC(10/6)とRSNA(10/26)が締め切りを迎える。

これらのコンペの中からメダルを1個獲得できれば、2個目となり、Expertにランクアップされる。

しかし、どのコンペも難しい。

OpenVaccine:メダル圏の外ではあるが近くにいる。(10/2追記:すごい勢いで遠ざかっていく、public LBでは勝負にならない)

OSIC:適正なパラメータセッティングの方向性が見えない。

RSNA:いまだに、戦う手段を持っていない。(OpenVaccineとOSICが終わってから検討する)

 

10月1日(木)

OpenVaccine:

アンサンブルの重みの検討:

最大値と最小値の差が2/1000程度ある6件のデータを用いたアンサンブルでは、単純平均の場合と比べると、重みづけにより、public LBは、2/10000程度改善した。

今の自分の順位だと、周辺のチームは数時間で2/10000くらい上がってしまうので、もっと効果的なスコアアップ手段がないとメダル圏内は難しい。

少しスコアが悪くても、スコアが近いものを複数合わせると良くなるので、今日検討した6件以外のデータについて、アンサンブルに使えるかどうか、明日、調べる。

10時間くらいで、メダル圏内との距離が、5/10000以上、大きくなった気がする。

13時間くらい前に、新たなコードが公開された。活発な議論が展開されている。

伝説のKagglerまで現れてコメントしている。(ただし、ネガティブなコメント?)

それにしても、参加していないようでも、ちゃんと、見ているんだね。

しかし、非常に難しい状況になってきた。

 

10月2日(金)

OpenVaccine:

メダル圏との差が2/1000以上になった。

チャレンジしないと、とても追いつかないし、追いつけない戦いはしたくないし、ここであきらめることもしたくない。(public_test_dataが9%と少ないので、どんでん返しにも少しは期待しながら・・・。)

まずは、アンサンブルの効果確認から始めよう。

メダル圏内が、0.239+となっているときに、3件の0.247+と4件の0.246+を利用できるかどうかを調べるのは無意味のように思うが、やってみよう。

それぞれの効果はそれなりに認められたが、最終結果への効果は、4/100000であった。

順位変動なし、というより、この作業中にも順位は下がった。

自分のアンサンブルのやり方では、public LB値は、最もよいモデルのそれよりも、2/1000くらい小さくなることがわかった。

自分の単一モデルの結果0.243+は、現在トップの0.228とは、6-7%くらい違う。

efficientnetの'b0'と'b7'くらい違うということか。

mrkmakr氏の公開コードの概要説明を転記させてもらおう。

training scheme

(1) train denoising auto encoder model using all data including train and test data

(2) from the weights of denoising auto encoder model, finetune to predict targets such as reactivity

rough network architecture

inputs -> conv1ds -> aggregation of neighborhoods -> multi head attention -> aggregation of neighborhoods -> multi head attention -> conv1d -> predict

this architecture was inspired by https://www.kaggle.com/cpmpml/graph-transfomer

最後にinspireされたプログラムとしてあげられているのは、CPMP氏の公開コードで、NFL Big Data Bowlコンペのものである。

 

(さきほど、スカパーのチャンネルを適当に変えていたら戦争映画にでくわした。途中からだったが、引き込まれて、最後まで見た。Darkest Hourというタイトルだった。)

 

10月3日(土)GPU:0/38, TPU:0/30

OpenVaccine:245/1543, 0.24148, 0.23846

現時点で、3/1000の改善が必要。

単独のスコア0.24353を0.24053まで下げる方法を探す。

最初に試した結果も、2番目に試した結果も、散々(0.245+)だった。

深夜までトライしていたが、0.24353すら超えられない!

 

OSIC:309/2063, -6.8072, -6.8070

検討中

 

10月4日(日)

OpenVaccine:

新たに得た3件の予測データをアンサンブルに追加したが、スコアは改善されなかった。

ともかく、最良と思われる結果を、締め切りまで、計算し、submitしつづけるだけだ。(やけくそ!)

ようやく単独で0.242+となったが、ちょっと遅かったかな。

メダル圏内はすでに0.237+にまで下がっているので、このスコアでは、届かない。

計算資源を節約しながら(時間制限を受け入れながら)ハイスコアを出すには、まだまだ、技術が足りないということだ。

 

10月5日(月)

OpenVaccine:

昨夜計算した結果はcommit中のトラブルにより失ったため、計算は終了した。あとは、新たに得た2件の結果をアンサンブルに追加してsubmitするだけである。

今、public LBで320番くらいで、新しい結果をどう組み合わせても、メダル圏内に入ることはないが、最後の5回のsubmissionで最善をつくそう。

コンペ挑戦終了。

0.24105, 311st(10/5/10:57)

 

OSIC:

締切日の前日にして、GPU割当時間を使い切った。

といっても、結局、方向が定まらず、気になる計算条件を煮詰めようとして計算を繰り返していたが、見えない相手に対して、どう攻めたらよいのか、わからないままである。

88回のsubmit履歴が残っているが、どのモデルがprivate test dataに対して最も確からしい予測結果を出せるのか、判断基準がわからないままである。

コンテストのために用意されたデータではなく、現実世界で使われているデータで、よく整理されたデータというよりは、医療現場で蓄積されたデータを取捨選択することなくかき集めてきたもののように思う。

それだけに、このデータから何が言えるのかを根拠をもって説明できるだけのモデルでなければならないのだろうが、残念ながら、そこには辿りつけていない。

 

10月6日(火)

OpenVaccine:

最終提出期日を間違っていた。

昨日ではなく、今日だった。

 

OSIC:

今日が投稿最終日だ。

 

RSNA:

20日間は、このコンペに集中しよう。

現在、330チームがリーダーボードに掲載されている。

A pulmonary embolism (PE) is caused by an artery blockage in the lung.

Currently, CT pulmonary angiography (CTPA), is the most common type of medical imaging to evaluate patients with suspected PE. 

In this competition, you’ll detect and classify PE cases. 

 

10月7日(水)

OSIC:

暫定結果は、1504番目

気合十分で始めたコンペだったので、この結果は、非常に残念である。

結局、最後の2回のsubmissionを選んだ。

public LBの最も良い値を選んでいたら、1120番くらい。

submitした中で最も良かったのは、最終順位で106番で、銀メダル相当だった。これは、NNのフィッティング結果が良かったのでsubmitしたのだが、public LBは良くなかったし、これを選ぶ特段の理由がなかったので、選ばなかった。

これは、順位が大きく変動するだろうという予想どおりとなったが、どうすれば良いか、どれを選べばよいかは、わからなかった。

 

OpenVaccine:

暫定結果は、379番だった。

メダル圏外ということでは、残念な結果だが、これは、ほぼ、予想通りである。

普通に計算して、その結果をアンサンブルしただけなので、大きく上がることも下がることもないだろうと思っていた。

 

RSNA:

データが非常に大きく、inferenceに長時間を要することから、コードコンペでありながら、inferenceに限るということだが、こういうのは、自分にとっては初めてのことである。

画像の扱いも、少し、特殊であり、train画像の枚数も多い。

データは、大きすぎて(900 GB以上)ノートパソコンにダウンロードできない。

 

10月8日(木)

RSNA:379チーム

今日は。trainコードとinferenceコードを準備しよう。

参加者が少ないためか、公開コードが少ない。

trainコードの準備

・学習させたモデルはsaveする。

・saveしたモデルは、kaggle datasetとして保存する。

inferenceコードの準備

・ 学習済みモデルのload:作成したkaggle datasetから学習済みモデルを読み込む。

これだけのことなんだが、モデルの保存・読み込みは、これまで、それほど意識して使ったこなかったが、これを機に、使えるようにしよう。

モデルの保存等に関するコード:A. Geronさんのテキスト314ページ

Saving and Restoring a Model

When using the Sequential API or the Functional API, saving a trained Keras model is as simple as it gets:

    model = keras.models.Sequential([...]) # or keras.Model([...])

    model.compile([...])

    model.fit([...])

    model.save('my_keras_model.h5')

Keras will use the HDF5 format to save both the model's architecture (including every layer's hyperparameters) and the values of all the model parameters for every layer (e.g. connection weights and biases).

It also saves the optimizer (including its hyperparameters and any state it may have).

 

<雑談>

AIを極めることに取り組んできたが、そこから遠ざかっている自分の姿が見える。自分に見えているAIは、自分が見てきた過去のプログラミングでは成し得なかったことを成し遂げているが、それらが、ものすごく大きなものに見えることもあれば、想像していたものとは全く違って見えることもある。 (twitterに書こうとしてやめた)

今のプランは、メダル獲得競争と、メダル獲得を強いモチベーションにして、様々な課題解決のためのプログラミング技術を習得しながら技術レベルを高め、様々な課題に対してより高いレベルの解決方法を模索していくことであり、その先に、次の世代のAIを考え、構築していこうというものである。

今の自分の最大の弱みは、英語力である。このハンディーは非常に大きい。マニュアルをいちいち和訳していては進まないし、プログラムは英語そのものだから、プログラムもマニュアルも論文も書籍も斜め読みできる英語力がなければだめだ。

そう思って、昨年の6月頃にdeep learningを勉強するためのテキストとして、F. Chollet氏の著書を購入し、その後も、何冊か英語のテキストを購入してきた。しかし、読まなければ、書かなければ、使わなければ、英語力は身に付かない。

気がつくと、Google翻訳やオンライン翻訳に頼っている自分がいた。英語のテキストが理解できずに和訳を買って見比べながら読むこともやってみたが、新しい概念は和訳したってわからないのだ。定義や応用事例を見てその意味を理解していくのだから、1つの概念を理解するために日本語と英語の両方でやるなんてことは非効率の極みである。

 

10月9日(金)

Riiid!:

Answer Correctness Prediction

Track knowledge states of 1M+ students in the wild

The goal is to accurately predict how students will perform on future interactions.

If successful, it’s possible that any student with an Internet connection can enjoy the benefits of a personalized learning experience, regardless of where they live.

面白そうだな。オンライン学習が進めば、学習プロセスに関するデータが蓄積され、各人に合った学習プロセスを提供できるようになるということか。

学習の経過がフィードバックされるようにプログラムしておけば、自律的に成長していくということか。個々人の成長に合った学習プログラムが提供できればいいな。

各人が、自分で、自分の脳にプログラミングしているために、その能力の違いが学力の違いを生じさせているのだろう。そうすると、自分で自分の脳にプログラミングできない人にとっては、このような学習システムは重要なものになるのだろう。

学力に応じたプログラムが自動的に生成されるようにすればいいのだろう。

Tailoring education to a student's ability level is one of the many valuable things an AI tutor can do.

Your challenge in this competition is a version of that overall task; you will predict whether students are able to answer their next questions correctly.

You'll be provided with the same sorts of information a complete education app would have: that student's historic performance, the performance of other students on the same question, metadata about the question itself, and more.

公開コードのパラメータを少し変えて投稿してみた。

NNよりもLGBMの方が良さそうだ。

 

10月10日(土)

RSNA:

10月8日に検討した結果を元に進めるが、全体の流れをチェックしやすいように、再スタートする。

1.kerasで書かれた公開コードを使ってみる。(trainを含んでいるので切り離すが、trainを含んだままでcommit->submit->scoreまで進むかどうか調べてみる)

2.コードコンペなので、internet offにしなければならないが、このコードは、'imagenet' pretrained modelのweightsを、インターネット経由でダウンロードするようになっている。

3.kaggle kernelで使うdatasetを準備する。

 tensorflow/kerasのサイトの情報から、'imagenet' pretrained modelのweightsをダウンロードし、kaggle datasetに格納する。

4.このデータセットを、kaggle kernelの入力データに追加する。

5.train+inferenceプログラムを実行してcommitする。trainもinferenceも実行時間を設定しているので、各1時間で試してみる。実験なので、GPUは使わないでやってみる。

6.submitまでは無事に済んだ。

 ここで、スコアが表示されるかどうかによって、次の対応が決まる。

7.スコアが出た。0.975(0に近い方が良いスコア)であった。

 ということは、trainとinferenceが共存しても大丈夫ということだ。

8.GPUをonにすると、trainは5倍以上速くなるが、inferenceは2倍程度しか早くならないことがわかった。

9.試しに、512x512のデータをefficientnetB5でinferenceすると、GPUを使っても1時間に50kくらいしか処理できなかった。したがって、trainとinferenceの両方を含むコードでは、9時間の制限時間でも不足する。それだけでなく、大きなモデルで大きな画像を処理すると、inferenceだけのコードでも、制限時間内にinferenceが終わらない可能性が出てくる。ということで、trainとinferenceは分離しよう。

10.と言いつつ、0.975(これはとんでもなく悪いスコアで、トップは0.149、0.325とか0.434がたくさん並んでいる)を上回るスコアになるかどうか確かめるための計算を行う。CPUのみで、trainとinferenceのそれぞれに、4時間の時間制限をつける。0.975のときは、1時間の時間制限であった。どうなるか楽しみだが、計算とcommitを合わせて16時間、それにスコア計算の時間が加わるので、20時間以上かかりそうだ。

・こういう長い時間を要する場合は、いろんな不具合が生じて、何日もかかることがあるので、気長に、楽しみながらやるのがよい。

 

10月11日(日)

RSNA:

悪い予想が当たった。朝起きると、次のメッセージを残して、計算が止まっていた。

Your notebook tried to allocate more memory than is available. It has restarted.

停止していたのは、inferenceの途中だったので、train中の情報がメモリーに蓄積されていたのが、まずかったのか。ともかく、途中経過がわからないと対策のしようがない。

'view session metrics'を'on'にしておけば、メモリーの使用状態が、リアルタイムでわかる。(眠っていたらわからないけど)

途中経過を見ているところだが、Diskではない。RAMの使用量(max 16GB)が、14GBから徐々に増え、50分くらいで16GBに到達し、それ以降は、なんらかの調整機能が働いているようで、15.4-15.9GBあたりで推移している。

GPUをonにしたらどうなるのだろうか。:RAMは16GBから13GBに割り当てが減少するので直接比較できない。GPUのRAMとの関係もわからない。GPU併用との大きな違いは、CPUの稼働率が300%を超えていたのが、120%以下に下がったこと。ともかく、途中で停止せず、予定の計算を最後までやってくれたらそれでいい。

順調に進んでいるように見えていたが、one batch timeが、inferenceの進行とともに長くなっている。バッチあたり13秒くらいで始まったのが、1時間を過ぎるころには2倍くらいかかっている。

予定の3時間まであと25分のところで、同じメッセージYour notebook tried to allocate more memory than is available. It has restarted.があらわれて停止した。

嫌なパターンだ。

どうしたものか。

モリー使用量が問題なら、batch_sizeを下げれば良かろうと思って500から250に下げると、処理時間が倍ほどかかりそうで、途中でやめた。batch_sizeが原因かどうかもわからず下げるより、上限を探ろうと1000に設定してみた。理由はわからないが、とりあえず最後まで計算が進んだので、ひとまずOK。

さらに条件検討してみよう。メモリーコントロールを学ばないといけないようだ。プログラムコード中に、del modelとか、del x,とか、見かけたような気がする。

とりあえず、inferenceもできるようになった。しかし、スコアがおかしい。最初のスコアは、一部の結果しか得られていないから仕方ないのだが、inferenceは完了したにもかかわらず、スコアがそれほど良くならない。

 

10月12日(月)

RSNA:

predictionの割合とLBスコア:53k/147k:0.975、88k/147k:0.934、147k/147k:0.862

 train:efficientnetB0、256x256、25k-125k/1790k 

いまは、predictionが進めば、スコアが少しづつだが、良くなっている(値が小さくなっている)、というレベル。

次は、predictionの後処理を調べてみよう。

evaluationを見ているのだが、よくわからん。

 

10月13日(火)

RSNA:

うまく動き出したと思ったのだが、submitした後のスコアリング中にNotebook Timeoutが発生した。

なぜエラーになるのかわからない。

 

Kaggle cources:

Kaggleから、Intro to Deep Learningの案内が来た。

昨年、deep learningを本格的に勉強し始めたころは、Kaggle minicource ?、には、たいへんお世話になっていたのだが、もの足りなくなって、data campを利用したり、テキストを追加購入したりして勉強していたのだが、ある程度習得したつもりで、あとは、応用だとばかりに、Kaggleコンペにのめりこんでいるところである。

しかしながら、課題に取り組んでみると、自作のモデルでは、良い性能が出せなくて、いつしか、公開コードをフォークするのがあたりまえのようになってきた。

こういう状況をみすかされたわけではないと思うが、良い機会ととらえ、勉強してみようと思っている。

昨晩は、YouTubeDeep Learning State of the Art (2020) | MIT Deep Learning Seriesを聴講したが、お話は、いくら聞いても身に付かないと感じていたところである。

入門レベルだが、英語の勉強を兼ねて、取り組もう。

 

10月14日(水)

mail from Kaggle:

You’re not too far from receiving a completion certificate!

f:id:AI_ML_DL:20201014093748p:plain

For every course you complete on Kaggle, we’ll issue an official certificate that celebrates the progress that you’ve made in your data science and machine learning journey.

手を付けたはいいが、ほったらかしにしていたら、こんなメールが届いた。

今月中に、全コースの終了証をもらえるように、がんばってみよう。

 

<雑文>

ここ2,3日、頭が重い。なぜかと考えてみた。脳になんらかの負担がかかっているということなんだろうな。脳には、体のあらゆる情報が集まっているのだから、頭が重いのは、体のどこかに不具合が生じているということだろう。ここ2,3日の変化と言えば、1週間くらい前から、ダンベルを持ち出して、腕力のトレーニングを始め、数日前からは、push ups(腕立て伏せ)の回数を増やそうとして、計算の合間に、強めのトレーニングをしてきた。今日は、肩から上腕部にかけて痛みがあり、同時に、頭の重さを強く感じるようになった。こうなると、トレーニングをやめてしまい、三日坊主に終わってしまうことになるんだろうな。負荷を調整しながら、トレーニングを続けよう。

 

RSNA:

まだ、trainとinferenceの両方を含むプログラムを使っている。

性能アップのためには、十分なtrainingが必要であり、trainとinferenceを分離する必要がある。これが、まだうまくいっていない。

train modelは、detasetに入れて、inference notebookの入力データに追加して、読み込もうとしているのだが、・・・。

今日は、trainとinference共存で、trainをかなり多くしてみたところ、inferenceに移ってからの処理速度が遅くなった。負荷がかかってるなという気がしてから30分くらいの間にプログラムが停止した。

GPU使用、'B0', 256x256で3エポックでも18時間くらいかかりそうなので、もうこれは、単にtrainとinferenceを切り離せばよいというものではないことを確信した。

ここからメダル圏内に入るために、trainにTPUを使おうと思う。当初からそうしないとだめだろうなというところにきてしまった。

ぼちぼち勉強しながら前進しよう。

 

Winner's Interview:Tweet Sentiment Extraction

Kaggleからのメールを見て、インタビューの一部を聴講してみた。2位は日本人3名のチームだった。説明内容もトークも良かった。あたりまえだが、レベルが高い。雲の上の人たちだなと感じてしまう。

 

intro to machine learning:

ぼちぼち勉強中。

 

10月15日(木)

RSNA:

スコアの良いコードが公開されていたので、利用させていただいた。それでもメダル圏外である。公開したチームは、(当然)それより良いスコアで上位にいる。

関連するdiscussionから、trainには、相応の計算資源と計算時間(+コーディング+デバッグ)が必要であることがわかる。

trainに用いたコード(例)も公開されている。

この公開コードによって、Project MONAIの存在を知った。

https://docs.monai.io/en/latest/:以下、ここから引用

Project MONAI

Medical Open Network for AI

MONAI is a PyTorch-based, open-source framework for deep learning in healthcare imaging, part of PyTorch Ecosystem.

Its ambitions are:

  • developing a community of academic, industrial and clinical researchers collaborating on a common foundation;

  • creating state-of-the-art, end-to-end training workflows for healthcare imaging;

  • providing researchers with the optimized and standardized way to create and evaluate deep learning models.

Features

The codebase is currently under active development

  • flexible pre-processing for multi-dimensional medical imaging data;

  • compositional & portable APIs for ease of integration in existing workflows;

  • domain-specific implementations for networks, losses, evaluation metrics and more;

  • customizable design for varying user expertise;

  • multi-GPU data parallelism support.

Modules in v0.3.0

MONAI aims at supporting deep learning in medical image analysis at multiple granularities. This figure shows a typical example of the end-to-end workflow in medical deep learning areaimage

MONAI architecture

The design principle of MONAI is to provide flexible and light APIs for users with varying expertise.

  1. All the core components are independent modules, which can be easily integrated into any existing PyTorch programs.

  2. Users can leverage the workflows in MONAI to quickly set up a robust training or evaluation program for research experiments.

  3. Rich examples and demos are provided to demonstrate the key features.

  4. Researchers contribute implementations based on the state-of-the-art for the latest research challenges, including COVID-19 image analysis, Model Parallel, etc.

The overall architecture and modules are shown in the following figure: image

これまでに、MONAIを見たり聞いたりしたことがない。情報収集力に問題ありだな。

0.1.0-2020-04-17となっているので、半年前に公開されたということか。

PANDAとTReNDSのdiscussionでは話題になっていたようである。

特に、TReNDSでは、discussionで7件、notebookで1件、検索でひっかかった。

discussionで多くでてきたのは、上位者が入賞記事でMONAIに言及していたため、すなわち、上位入賞者はMONAIのことを4か月以上くらい前から知っていて使っていたのである。さすがだな。

Kaggleは、100 ppmレベルの違いを競っていて馬鹿らしく見えるときもあるが、さらに上を目指すために、新しい優れた技術を探し当てて利用し、あるいは、それらを創り出すきっかけになっているのだろう。

 

Intro to Machine Learning:

初歩の初歩だけど、あらためて、やり直してみると、最近はプログラムを一から書いていないからだろうな、解説やコード例を何度も見返さないと正しいコードが書けなくなっている。

 

10月16日(金)

Intro to Machine Learning:

本日22時46分、やっと終了した。過去にsubmitまでやった履歴が残っていたが、記憶に残っていたのは少なかった。

 

Bonus Lessons:Intro to autoML:

google cloud autoMLの宣伝?ひとまず中断!

 

Intermediate Machine Learning:

2019年9月14日に終了していた。

記録が残っているのだが、記憶に残っていない。

気がつけば、ボケ老人になっていたということか。

1年前は、3時間で片付けようとか、3日でやってしまおうとか、1週間もあればできるとか、3か月後にエキスパート、6か月後にマスター、1年後にグランドマスターとか、言っていた。

そのようなノリで、このコース:Intermediate Machine Learning:も、斜め読み(英語の斜め読みはいい加減だったと思う)とコピペで終了したのかもしれない。正確には思い出せないが、じっくりと腰を据えて取り組んだものではなさそうだ。

PythonがYour Completedの中に入っていたので、中を見たが、とても理解できているとは思えない。とにかく、Coursesを、全部、やりなおそう。

 

10月17日(土)

RSNA:

パラメータを変えてRun, commit, submit, スコアに変化なし。

 

Cources:Pandas

英文の単語の配置を変更して少し記号を追加すればコードになるのに、日本語が間に入ってしまうから、難しくなる。それだけのこと。

Lessonは、TutorialとExerciseに分かれていて、Tutorialのテキストを読み、Exerciseの各問題を解く(コードを入力する)、ということだと思っていて、Tutorialは読むだけだったが、Editorを動かせば、例題のコードを好きなように変更して、コードの動作確認をしながらコーディングを学ぶことができる。いまごろ気付いた。

 

10月18日(日)

RSNA:

進捗なし。

 

Cources:Pandas

Create variable centered_price containing a version of the price column with the mean price subtracted.

(Note: this 'centering' transformation is a common preprocessing step before applying various machine learning algorithms.)

centered_price = reviews.price - reviews.price.mean()

Exercise中にYour notebook tried to allocate more memory than is available. It has restarted. このメッセージが現れた。全く、理由がわからない。

リスタートしたら、こんどは、このメッセージがすぐに現れて、停止した。

 

Lyft

フォークして実行するだけ。だめだな。進歩無し。

 

10月19日(月)

今日は、朝から、Cheatingに関する議論を眺めている。

Cheatingは不正行為全般を指しているので案件ごとに内容が異なり、対応も異なるが、詳細を記することは、それを真似た不正が生じる恐れもあり、対応策にしても明確に示すのは難しく、検討のさなかにあるということである。

Plagiarismの話題では、盗作といえば、公開コードに関するものだが、公開コードを使って計算して投稿すること自体が問題だという人もいる。これを許容していることがKaggleの特徴であり、これ自体は問題ではない。

問題は、Kaggleのランク付けと関係しており、公開コードのupvote数およびその件数によってランクが上がり、コンペのランクと同じ呼称、エキスパート、マスター、グランドマスターが与えられる。この公開コードでランクアップを狙う過程で盗作があるということである。コードを販売して利益を得ているのではないが、公開コードへの投票が自分への投票になるということにおいて、栄誉という利益を得ていることになり、それが、著作権を盗んでいることになるのである。

論文を書いたことのある人はわかると思うのだが、著作物は、そこで使われている文章、図面、手段、理論などの出典を明らかにすることと、著作者の許諾を得ることは必須であるが、それを理解しない人が多いということである。

こういう決まり事は、体得していないとわからないものである。SNSで発信する場合も同じ縛りがあるのだが、個人使用と公開との境界があいまいになり、放置されていることが多い。

Plagiarismに関する議論で、誰かが、盗作者に対しては、きちんと取り締まるべきであり、盗作か否かの境界を明確にし、担当者を増やすなりしてきちんと対処してほしいということをKaggleに対して要望していた。これに対して、Kaggleの担当者の1人が、そのとおりであるが、全体のバランスも勘案しながら良い方法を検討していくと述べた。実社会でもそうだが、訴えがなければ、裁判は始まらず、訴えができるのは、原則として、損害を被った当事者であることから、利害関係のない人から盗作の指摘があっても、主催者が事実関係を調べるべきである、ということにはならない。

コンペは賞金が絡むので不正を見逃すことはできないが、それ以外は、当事者がKaggle参加者であれば、ゆるくしておいてもよさそうな気はする。

最近、GitHubから引用した人が引用元を明示していなかったことを、制作者に指摘されているのを見た。これは非常識すぎると思った。GitHubには、ライセンスの種類が明記されており、表示が必要な場合には、表示の仕方が明記されている。

 

RSNA:

STARTER DATASET: Train JPEGs (256x256)

This competition is challenging due to the huge dataset size. In addition, people may not be familiar with medical imaging and CT scans.

To lower the barrier to entry to this competition and to encourage more people to participate, I have converted all of the DICOM images into JPEGs (about 52GB), 256x256 pixels (standard is 512x512).

GMIan Pan氏が、1か月も前に、コンペに参加してもデータが大きすぎて、手も足も出ない者に対して、このようなデータセットを作っておられたことに気付かなかった。

 

Cources:Pandas

学習中のエラーの原因は、コードの書き間違いだった。'.'とすべきところに'/'が入っていたのが原因だったようだ。しかし、メッセージの意味とのつながりがわからない。

とりあえず、エラーは解消し、次に進めるようになった。

 

今日のスロージョギング:4.2 km, 46 min

 

10月20日(火)

Cources:Pandas

ようやく、一通り終えた。TutorialとExerciseがペアになっているので、Tutorialで学び、Exerciseで学んだことを確認するものと思ったが、そうではない。両方を合わせて1つであり、両方合わせても、Pandasのごく一部にすぎない。ということは、このレベルのことは、スイスイできるようになっていなければならないということだろう。

 

Cources:Data Visualization

Progressが53%になっているので半分くらいやったのかなと思ったら、Tutorialをすべて眺めただけだった。ということで、Exerciseにとりかかろう!ではなくて、Tutorialの最初から、英文で内容を理解しよう!

genre:ゲンレと発音していて、ジャンルの意味だとは知らなかった。こんなレベル!

categorical scatter plot:

sns.swarmplot(x=candy_data['chocolate'], y=candy_data['winpercent'])

f:id:AI_ML_DL:20201020201216p:plain

作図は形式的にやっていても得るものは少ない。表から直観的に概要を捉えたうえで、仮説を立てながら、図示し、図から関係性を定量的につかんでいく、というような感じで進めていくことができなければ、コードも頭に入らない。1年くらい前に取り組んだ時には、表の意味を理解することに、ものすごく手間がかかって、結局、放り出していたのだろうと思う。

 

RSNA:

何かやれることはないかと考えていただけである。

 

 

f:id:AI_ML_DL:20200930212926p:plain

style=156 iteration=1

f:id:AI_ML_DL:20200930213016p:plain

style=156 iteration=20

f:id:AI_ML_DL:20200930213123p:plain

style=156 iteration=500