【AI】機械学習入門前のあなたがAI人材となる前に学ぶべき6つのこと


# Introduction

:::note info
Information:
機械学習未経験だけど、やってみたい！orやることになった方向けの入門記事です。
何かしら言語の勉強or経験者を想定しています。
上記の理由より、正確さよりわかりやすさを重視した記述を心がけています。
:::

ChatGPTやBardなどの大規模言語モデルの進歩に加え、AIの社会実装をニュースで目にする機会も増えています。
研究開発を進め、PoCを行うだけでなく、保守運用が重要になってきています。
より多くの人々、より広い分野でAI人材が求められるフェーズに突入しています。
AIプロジェクトも増えるでしょう。
~~（地方である弊社にその気配は皆無です）~~

本記事では、これからプロジェクトに参画する方やそのためのアピールをしたい方向けに、参画前に学んでいただけたら大変助かることを紹介します。

**本記事が少しでも読者様の学びに繋がれば幸いです！**
**「いいね」をしていただけると今後の励みになるので、是非お願いします！**

## ToC

- [Introduction](#introduction)
  - [ToC](#toc)
  - [注意事項](#注意事項)
  - [OS](#os)
  - [Python](#python)
  - [Pythonライブラリ](#pythonライブラリ)
  - [IDE](#ide)
    - [VSCode](#vscode)
    - [Jupyter Lab](#jupyter-lab)
    - [Google Colab](#google-colab)
  - [機械学習](#機械学習)
  - [GitHub](#github)
    - [最後に](#最後に)

## 注意事項

:::note info
本記事で紹介する内容:
機械学習プロジェクト参画前の方が、前提として習得していただきたいこと。
学んでおくと参画後に得すること。
:::

:::note warn
本記事で紹介しない内容:
未経験者には難易度が高い内容。
プロジェクトに依存すること。
具体的なソースコード。
:::

機械学習って聞いていたのにバックエンドだった...という悲しいケースでも役立つことを記述していきます。

## OS

機械学習ではLinuxをほぼ確定で扱うことになります。
特にWindowsユーザーにとって最初の挫折ポイントになりかねません。
機械学習でよく用いるみんな大好きPython[^1]も、Windowsに入れるのは面倒かつ遅いためLinuxは必須です。
[^1]: 私は趣味でもゴリゴリ書く程度には好きです。

WindowsでLinuxを使う方法はいくつかありますが、有名どころにWSL2があります。

https://www.kagoya.jp/howto/it-glossary/develop/wsl2_linux/

ただし仮想マシンのためメモリをかなり使用しますし、それなりにラグもあります。[^2]
[^2]: 私は先行投資だと思ってUbuntuで自作マシン作りました。
おすすめはしませんが予算があれば是非。

お手持ちのマシンスペックが不安であれば、さくらのクラウドシェルがおすすめです。
ブラウザ上ですぐにLinuxをお試しできます。

https://qiita.com/kagami_t/items/5b6cad0d5e84cfdb52ef

:::note info
学んでおくこと:
Windowsのエクスプローラーで普段行っている操作全般。
下記記事の①と②のcatが自然と使えれば十分です。
:::

https://qiita.com/nokonoko_1203/items/35c4078bf72cffb16171

## Python

機械学習プロジェクトであればメイン言語はほぼPythonだと思います。
他にもC++やRなどありますが、未経験者が参画できるプロジェクトはPythonが多いです。
ライブラリが豊富な言語ですが、標準機能を体系的に学んでおくと後で楽できます。

:::note info
学んでおくこと:
基礎的な内容を一通り書いてみる。
書籍1冊読み切ることをおすすめします。
迷ったら下記の書籍が初心者でも読みやすく、実務にも役立ちます。
:::

[シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全](https://www.amazon.co.jp/%E3%82%B7%E3%83%AA%E3%82%B3%E3%83%B3%E3%83%90%E3%83%AC%E3%83%BC%E4%B8%80%E6%B5%81%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC%E3%81%8C%E6%95%99%E3%81%88%E3%82%8B-Python%E3%83%97%E3%83%AD%E3%83%95%E3%82%A7%E3%83%83%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB%E5%A4%A7%E5%85%A8-%E9%85%92%E4%BA%95-%E6%BD%A4/dp/4046057548)

動画学習の方がお好きな方は、少し古いですが同じく酒井さんのUdemyをおすすめします。

https://www.udemy.com/course/python-beginner/

## Pythonライブラリ

上記Python学習中に幾つか学ぶことになります。
NumpyやPandasなど、よく目や耳にするものは何のためのライブラリで、何ができるのかを最低限覚えておくと良いです。
+αで、後ほど記載するJupyter等でサンプルコードを書いて処理を確かめておくと理解が早くなります。

Pytorch、TensorFlow、scikit-learn、Kerasなど機械学習フレームワーク、ライブラリはプロジェクトによって使う使わないがあるため、参画前後でキャッチアップすることをおすすめします。

## IDE

### VSCode

開発環境はVSCode使えれば問題ないです。

https://code.visualstudio.com/

インストールせずにブラウザでも使えます。

https://vscode.dev/

GitHubでも`.`を押せば使えます。

https://weseek.co.jp/tech/3405/

### Jupyter Lab

ブラウザ上でコードを実行でき、リアルタイムで表示させられます。

https://ai-inter1.com/jupyter-lab/

Jupyter Notebookの拡張版であり、短いコードやデータ分析によく用いられます。

### Google Colab

無料でGPUも使えるJupyter Notebookサービスです。

https://blog.kikagaku.co.jp/google-colab-howto

Googleアカウントが必要な点や、プロジェクトではGPUマシンがあるため実務で使うケースは多くないかも知れませんが、GPUを持っていなくても機械学習が行えるため重宝します。[^3]
[^3]: GPUがないと機械学習を満足に行うことができません。
Google Colab上で他人が書いたコードをそのまま実行もできるため、是非積極的に活用しましょう。

## 機械学習

キカガクさんの脱ブラックボックスコースで学びましょう。

https://www.kikagaku.co.jp/course/1-h64umbk48b

https://qiita.com/yoshizaki_91/items/22e82d2040a576ecefa3

機械学習の入口としてこれ以上のものは、私の知る限りでは存在しないです。
しかも無料です。数学も学べます。
私は文系人間で数学は苦手でしたが何とかついていけたため、恐らく誰でも大丈夫です。[^4]
[^4]: 当時の私には重度の数式アレルギーがありました。

時間がなかったり、難しければ単回帰分析まででも良いです。
機械学習の実装をすることで、ご自身の想像していた機械学習のイメージが形つき、実務での実装理解に役立ちます。

## GitHub

言わずもがなソースコードを共有できるホスティングサービスです。
GUI上での使い方に加えてLinuxでのCLI操作に慣れておきましょう。

ここまでで記載した内容について、ハンズオンで学ぶことが必ず発生します。
学んだコードをGitHubで管理していけば自然と操作は身につきます。

GitHub上で管理するリポジトリの作成は下記を参照ください。

https://qiita.com/kagami_t/items/ade25ff6e8bf8faf2ab2

加えて下記は身につけておきたいです。

https://www.yoheim.net/blog.php?q=20140104

### 最後に

最後まで閲覧頂きありがとうございました。
本記事では機械学習未経験かつプロジェクト参画前の方を対象として、事前に学んでいただきたい内容を記載しました。
書ききれなかったこと、難易度や習得時間的に敢えて書かなかった内容も多くありますが、いわゆるタイパの良い内容は記載できたと思っています。[^5]
[^5]:数学、統計、英語など

個人的にはCLIでの操作ができれば後は努力でどうにでもなると思う反面、努力できないとどうにもならないとも思っています。
+αで、プロジェクト内で何か1つ得意なことを見つけられるとより良いです。
その得意が、他のメンバーが面倒や苦手と感じるものであれば尚良いです。

私の場合はシェルスクリプトです。[^6]
[^6]: 他にもMLOpsの推進がありますが、AWS等使えない環境なため大したことはやれておらず...もっと学びたいです。

たまたま発売日に購入した下記の書籍が肌に合い、周りに得意な人もいないため優位かつ精神安定剤の1つとなってくれています。

https://www.amazon.co.jp/%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0Linux%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88-%E7%AC%AC2%E7%89%88-%E2%80%95Linux%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%80%81bash%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%80%81%E3%82%B7%E3%82%A7%E3%83%AB%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%AE%9F%E8%B7%B5%E5%85%A5%E9%96%80-Mokhtar-Ebrahim/dp/481440011X

本記事がお役に立てば幸いです！