16歳の高校生が13,000行以上のコードでC++機械学習ライブラリをゼロから作成した

16歳の高校生が13,000行以上のコードでC++機械学習ライブラリをゼロから作成した

コンピューターが大好きなティーンエイジャーは、16歳にしてすでに、広東語プログラミング言語の開発、Kaggleチャンピオンシップでの優勝、ゲームの執筆、暗号通貨投資ロボットの開発、C++機械学習ライブラリのゼロからの構築など、何かを創造することができます。

今日は、C++ 機械学習ライブラリをゼロから構築した 16 歳の少年 (@novak-99) を紹介したいと思います。彼の自己紹介の投稿は、reddit で何百ものいいねを獲得しました。

彼が構築したライブラリ (ML++) には 13,000 行を超えるコードが含まれており、統計、線形代数、数値解析、機械学習、ディープラーニングなどのトピックをカバーしています。

プロジェクトアドレス: https://github.com/novak-99/MLPP

@novak-99 は、C++ が自分の選択言語であったためこのライブラリを構築したと述べていますが、ML フロントエンドに関しては、C++ はほとんど使用されていません。

C++ は効率的で、高速実行に適しています。そのため、ほとんどのライブラリ (TensorFlow、PyTorch、Numpy など) は、最適化と速度のために C/C++ または C/C++ 派生言語を使用します。

しかし、さまざまな機械学習アルゴリズムのフロントエンド実装を調べてみると、そのほとんどが Python、MatLab、R、または Octave で実装されていることに気付きました。彼は、C++ が ML フロントエンドであまり使用されない理由は、主にユーザー サポートの不足と C++ の複雑な構文にあると考えています。

Python と比較すると、C++ の機械学習フレームワークは非常に少ないです。さらに、PyTorch や TensorFlow などの一般的なフレームワークでも、C++ 実装は Python 実装ほど完全ではなく、ドキュメントが不足している、すべての主要関数が存在しない、貢献する意思のある人があまりいないなどの問題があります。

さらに、C++ は Python の ML スイートのさまざまな主要ライブラリをサポートしていません。 Pandas も Matplotlib も C++ をサポートしていません。これにより、データの視覚化とデータ分析の要素を取得するのが難しくなるため、ML アルゴリズムの実装時間が長くなります。

そこで彼は、C++ 機械学習ライブラリを自分で作成することにしました。

また、ML アルゴリズムは実装が非常に簡単なため、一部のエンジニアは実装とその背後にある数学的な詳細を見落とす可能性があるとも指摘しました。数学的な詳細を理解しなければ、特定のユースケースに合わせて ML アルゴリズムをカスタマイズすることは不可能であるため、これは問題になる可能性があります。そこで彼は、ライブラリに加えて、統計、線形回帰、ヤコビ行列、バックプロパゲーションなど、ライブラリ内の各機械学習アルゴリズムの背後にある数学的背景を説明する包括的なドキュメントもリリースする予定です。ここにいくつかの統計があります:

プロジェクトを開くと、いくつかの詳細が表示されます。

19の主要なトピックを網羅したこのML++は、十分に大規模で包括的です。

ほとんどのフレームワークと同様に、高校生が作成した ML++ ライブラリは動的であり、常に変化しています。これは、毎日新しいアルゴリズムや技術が開発されている機械学習の世界では特に重要です。

現在、ML++ ライブラリでは次のモデルとテクニックが開発されています。

  • 畳み込みニューラルネットワーク (CNN)
  • サポートベクターマシン (SVM) カーネル
  • サポートベクター回帰

全体として、ML++ ライブラリには、次の 19 の主要トピックと関連するサブコンテンツが含まれています。

  • 回帰(線形回帰、ロジスティック回帰、ソフトマックス回帰、指数回帰、プロビット回帰、クロッグログ回帰、Tanh 回帰)
  • ディープでダイナミックかつスケーラブルなニューラル ネットワーク (活性化関数、最適化アルゴリズム、損失関数、正則化手法、重み初期化手法、学習率プランナー)
  • 構築済みのニューラル ネットワーク (多層パーセプトロン、オートエンコーダ、ソフトマックス ネットワーク)
  • 生成モデリング(表形式の生成的敵対ネットワーク)
  • 自然言語処理(Word2Vec、ステミング、bag-of-words、TFIDF、補助テキスト処理関数)
  • コンピューター ビジョン (畳み込み演算、最大/最小/平均プーリング、グローバル最大/最小/平均プーリング、事前構築された特徴ベクトル)
  • 主成分分析
  • ナイーブベイズ分類器(多項式ナイーブベイズ、ベルヌーイナイーブベイズ、ガウスナイーブベイズ)
  • サポートベクター分類(プライマルフォーメーション、デュアルフォーメーション)
  • K平均法アルゴリズム
  • K近傍アルゴリズム
  • 外れ値ファインダー(標準スコアを使用)
  • 行列分解(SVD分解、コレスキー分解、QR分解)
  • 数値解析(数値微分、ヤコビベクトル計算機、ヘッセ行列計算機、関数近似器、微分方程式ソルバー)
  • 数学的変換(離散コサイン変換)
  • 線形代数モジュール
  • 統計モジュール
  • データ処理モジュール (特徴スケーリング、平均正規化、ワンホット表現、逆ワンホット表現、サポートされている色空間変換タイプ)
  • ユーティリティ (TP/FP/TN/FN 関数、精度、再現率、正確度、F1 スコア)

詳細については、元のプロジェクトを参照してください。

ネットユーザー:とても暑いですが、どうしたらいいですか?

16歳でこのような傑出した作品が生み出されるという事実に対して、一部のネットユーザーはため息をつくばかりだ。この世の高校生は一体何をしているんだ?!私が彼らと同じ年齢だった頃は、まだ「指を噛んでいた」。そして彼らは ICLR や NeurIPS カンファレンスで論文を発表しています...

ネットユーザーの中には、高校生がこんなことをしているのなら、数年後の博士課程への出願競争がどれほど熾烈になるか想像できる、との声もある。今後、チューリング賞を受賞するには、3 件以上の NeurIPS 論文を発表するだけで済みます。

冗談のように思われるかもしれないが、現時点ではある程度「転がっている」とも言える。

しかし、一部のネットユーザーは、プロジェクトには13,000行のコードがあるのにテストがないと指摘しています。別のネットユーザーは、これは個人的な趣味に基づいて作成されたペットプロジェクトであり、実際の使用例には適していないと考えています。したがって、ここではテストは重要ではありません。

参考リンク:

https://www.reddit.com/r/MachineLearning/comments/srbvnc/p_c_machine_learning_library_built_from_scratch/

<<:  誰かが匿名ソフトウェアで私の学校を爆破したいと言っていたので、私はすぐに先生と警察に通報しました。xdm、私は正しいことをしたのでしょうか?

>>:  AIとIoT:共生関係

ブログ    
ブログ    

推薦する

機械学習が金融サイバー犯罪と戦う方法: 人工知能はセキュリティの洞察にとって不可欠

過去数か月間、コロナウイルス関連の請求による多大なストレスの期間中、失業保険制度から数百万ドルが盗ま...

2020年の人工知能業界に関する7つの予測

ついに2020年が到来しました。これは、火星探査、バイオニックロボット、自動運転、遺伝子編集、複合現...

データ構造と区間マージアルゴリズム、貪欲

[[439314]]マージ間隔LeetCode の問題へのリンク: https://leetcode...

自動駐車を徹底研究!業界標準の動向、評価指標、システム紹介まであらゆる角度から収集!

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

量子コンピューティングの巨匠アーロンソンが OpenAI に加わりました!彼はまた、ヤオクラスのトップ生徒である陳立傑の家庭教師でもある。

国内企業の大物たちが次々と退職し、大学へ移ったり、起業したりしている。違うのは、量子コンピューティン...

RPAテクノロジーが製造業の未来をどのように変えるか

RPA コンサルティング サービスは、製造業者がソフトウェア ロボットを使用してさまざまな反復的なル...

AIは宇宙探査の商業化をどのように推進するのでしょうか?

[[321585]]現代のコンピュータが誕生するずっと前から、数え切れないほどのSF作品が、宇宙を...

トラックに「透明マント」を装着し、自動運転車を衝突させる。これは誰がより早く攻撃できるかを競う競争だ

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

...

人間は形を見るが、AIは質感を見る:コンピュータービジョン分類の失敗についての議論

[[270985]]研究者たちは、ディープラーニングの視覚アルゴリズムが、主に形状ではなくテクスチャ...

...

避けられないアルゴリズムを完全に理解するにはどうすればよいでしょうか?

検索エンジン(Google Chrome、Mozilla Firefox など)を使用するとき、バッ...