(旧)平凡エンジニアからの出発

https://atuyan39.hatenablog.com/ に移動しました。

【6日目】平凡エンジニアがAIエンジニアになるまでの物語

目次

作業時間

2020/5/11

  • 22:45-24:45(2H)

作業報告

概要

行列の計算を体に染みつくのが大事。
簡単に扱えるようになるまで演習あるのみ。
どこから始めていけばいいかの目安、道しるべとしての講義。

線形代数とは?
数字がたくさん並んだものを操作したりして、特徴を見つける。

データから何かしらの値を見つけ出す。
データ→数字がたくさんある。
数字の並びから数字を出す。

数字の並びに対して行う演算は行列で表せる!
行列を理解していくことは、機械学習では必須項目。

ベクトル・行列・テンソル

  • スカラー:ただひとつの数字
  • ベクトル:順番にならんだ数字(縦に並べる)
  • 行列:2次元的に並んだ数字(横の並びを行、縦の並びを列)
    • 行数n、列数mの行列をn × m の行列という。
  • テンソル:3次元以上的に並んだ数字

ベクトル・行列・テンソルに含まれている一つひとつの数字を成分という。

トレースと行列式

トレース(正方行列についてのみ定義される)
行列式(正方行列についてのみ定義される)

ノルム

ベクトルの大きさを表す。

  • L1ノルム:全成分の絶対値の和
  • L2ノルム:全成分の二乗和の平方根

行列(ベクトル)の乗算

関数(行列)をつくるのが機械学習の目的。

逆行列

単位が決まれば、逆が決まる。

  • 足し算
X + 0 = X
X + (-X) = 0

"-x"が逆。
  • 掛け算
X * 1 = X
X * 1/X = 1

"1/X"が逆。

逆行列はどちらからかけても単位行列になる。
単位行列EIで表現される。

なんで、逆行列
機械学習の目的は、関数をつくること。
関数とは、行列のこと。いわゆる、モデル。
下記の手順でモデルを求めることができる!

  1. (モデル)(データ)=(目的)
  2. データの逆行列(データ)-1を知りたい
  3. (モデル)(データ)(データ)-1=(目的)(データ)-1
  4. (モデル)=(目的)(データ)-1
逆行列の求め方
  • 掃き出し法
  • 余因子展開

所感

行列はモデルであり、データでもあり、目的でもある。
そして、線形代数はその行列を操作することができる最強のツール。

一転語

何かに熱中することだ。そうすれば成功に必要なもの、たとえば目標や忍耐や努力や意志のようなものはあとからついてくる。神は私たち一人ひとりに、素晴らしい宝物をくださったのだ。それをそのままにして宝の持ちぐされにしてしまってはいけない。
【人生が驚くほど逆転する思考法 p.186】

【5日目】平凡エンジニアがAIエンジニアになるまでの物語

目次

作業時間

2020/5/10

  • 22:30-23:30(1H)

作業報告

Python講座】Python入門

セッション23~32
a = "Hello"
b = 0
# aはstr型。bはint型
a = b
# aはint型になる。
  • J(ジュール) = kg * m / s

  • 文字列も掛け算できる

a = "pen"
print(a * 3)
# penpenpneと表示される。
  • コメント追加
# コメント。
'''
シングルクォーテーション3つで囲った部分も。
coment.
コメント。
'''

# ※macなら「command + /」、windowsなら「control + /」
補足 〜演算子一覧〜
  • +, -, *, /の四則演算、**累乗、%剰余
  • 比較演算子==, !=, <, >, <=, >=, is, <>, ===
  • 代入演算子(=, +=, -=, *=, /=, %=, **=, //=, &=, |=, ^=, <<=, >>=)
  • ビット演算子(~, &, |, ^, <<, >>)
  • ブール演算子(and, or, not)

所感

算数やりやすいPython

一転語

職業を道楽化する方法は、ただ一つ、勉強に存する。
努力また努力のほかない。

あらゆる職業は、あらゆる芸術と等しく、それに入るに、はじめの間こそ多少苦しみを経なければならぬが、何人も自己の職業、自己の志向を天職と確信して、迷わず、疑わず、専心に努力するからには、早晩必ずその仕事に面白味を生じてくるものである。一度その面白味が生じてくることになれば、もはやその仕事は苦痛でなく、負担でなく、義務でなもない。歓喜の力行となって、立派な職業の道楽化となってくる。
【本田静六 自伝体験八十五年 p.198】

【4日目】平凡エンジニアがAIエンジニアになるまでの物語

目次

作業時間

2020/5/4

  • 18:30-20:00(1.5H)

作業報告

Python講座】Python入門 (52 セッション)

セッション11~22

◆進め方

  1. 丸暗記をする必要はない
  2. ネットで調べながら学習
  3. 躓いたら解答例を見よう

Pythonの勉強法

  1. 写経
    ・自分で手動で写す。
    ・エラーを除去する。
    ・徐々にできるようになる。
  2. 問題を解く
    ・タスクを細分化する。
    ・こまめに検証する。

Python環境構築【簡易版】
Anacondaをインストールして、Python 3の環境を構築

www.anaconda.com

Pythonメモ

  • Enterで編集モードを切り替わる。
  • バックスラッシュ\で次の行も一行として判定される。
  • 先頭のスペースは意味を持っている。
  • '\n'は改行

所感

Pythonに着手。

一転語

 「根深ければ葉繁し」というさやしい言葉がありますが、いずれにしても根が先です。ところが、根の方はどうしてもやりたくない。地下でいくら努力しても人に認められない、わかってもらえないということで、張り合いがない、楽しみがない。すぐに認めて、ほめてくれないということで、つい根を放っておいて木を伸ばそうとして失敗した人が世の中にはたくさんいます。

 私はそうすれば失敗するということをよく知っておりますから、とにかく根を深く広く張るという努力を今日までしてきました。結果としてそれが今日、大変大きな力になっております。この張り合いのない、楽しみのないことにどれだけ耐えられるかということ、これに耐えられないようだったら、私は駄目だと思います。

【凡事徹底 p.42】

【3日目】平凡エンジニアがAIエンジニアになるまでの物語

目次

作業時間

2020/5/3

  • 18:00-20:00(2H) 数学
  • 24:00-25:00(1H) ブログ

作業報告

数学day2_微分

連鎖律

合成関数の微分を多変数関数へ拡張したもの。
連鎖律(多変数関数の合成関数の微分) | 高校数学の美しい物語

方向微分

ある点でのある方向への傾き。
方向微分の意味と求め方 - 具体例で学ぶ数学

勾配

傾斜の程度。

勾配ベクトル

その点で関数の最も変化する方向を示す。

勾配降下法

機械学習の目的は、INPUTからOUTPUTを予測する関数を作ること。 その関数の勾配が0になれば誤差がないということ。 だから、勾配を0にするために、下記の手順を行う。

  1. 誤差関数の初期値を設定
  2. 初期値の勾配を計算
  3. 勾配方向に沿って一定の距離だけ動き、その座標での関数の値を取得
  4. 2、3を繰り返して、勾配が0になるまで繰り返す

所感

掛け算の計算をミスる。ケアレスミスには気を付ける。

一転語

吾人はややもすると努力せずしてある事を成さんとするが如き考えを持つが、それは間違いきった話で、努力より他に吾人の未来を善くするものはなく、努力より他に吾人の過去を美したものはない。

努力は即ち生活の充実である。
努力は即ち各人自己の発展である。
努力は即ち生の意義である。
【努力論 p.92】

【2日目】平凡エンジニアがAIエンジニアになるまでの物語

目次

作業時間

2020/4/29

  • 10:30-12:30 (2H) 管理
  • 20:30-23:30 (3H) 基礎講座(数学)
  • 23:30-24:30 (1H) ブログ更新

作業報告

作業状況把握のためのRedmine設定

自宅にあるローカルサーバーにRedmineを使えるように設定しました。

講義全体のボリュームの確認

私は基礎講座も受講しているため、E資格関連のコースは下記の3つありました。

Aさんでは8月の初旬までに「修了テスト」「演習課題」「プロダクト課題」をパスしておく必要があるようです。

修了テスト

基礎テスト(5科目)
E資格の基礎を確認する試験のようです。

注意点としては、下記2点になります。

  • 15分の制限時間があること
  • 3回まで無料で試験を受けることができること

→基礎講座受け終えてから、受けようと思います。

◆深層学習テスト(講義のDAY1~6の内容)
E資格講座本番の深層学習編を想定した試験のようです。

注意点としては、下記2点になります。

  • 90分の制限時間があること
  • 2回まで無料で試験を受けることができること
演習課題

DAY1~6各回の演習課題を全問正解すること。
何度でも修正してOK。

プロダクト課題

pythonを使ったディープラーニングの実装とプロダクトの提出をする。
個人的に、手話を文字に起こすプロダクト作りたいです。
翻訳関係の実装が強くなりたいです。

基礎講座

数学day1_関数・数列

学生時代を思い出す数学でした。
印象に残ったところだけメモします。

  • 機械学習の目的は、ほしい関数を作ること。
  • 関数をグラフでイメージできるようにすること。
  • 4次関数まではよく見かける。
  • 関数の合成:(f o g) (x)
  • Σの性質(和の公式、二乗和の公式)

所感

動画受講でしたが、資料もしっかりとしているので良いと思いました。
若干操作性が痒い所に手が届かない感じですが、支障は今のところないです。

今後の予定としては、下記の通りです。

  • 5月:基礎講座の受講完了
  • 6月:E資格対応講座の受講と試験完了
  • 7月:プロダクト作成完了
  • 8月:復習期間
  • 8/29(土):本番のE資格受験日

テレワーク&GWもあるので、その分がっつり勉強の時間が取れそうです。
Redmineの運用も模索しながら、活用していきたいな。
とにかく、GWをフルフルで活用するために詳細に計画立てていきます。

現場でも見積もりする力が弱いので、そういったところも改善していきたい。

一転語

失敗を最大の"教師"として、あるいは、それをヒントとして、「自分は何をしなければならないのか」「どこが違っていたのか」「どんな手を打たなければいけなかったのか」ということを考えなければいけません。
【社長学入門 p.300】

RedmineをUbuntu 18.04.04 LTS + docker-composeで爆速で起動させる

1. dockerとdocker-composeをインストールする

下記の記事を参考にインストールする。 qiita.com

2. Redmine用のフォルダを作成

mkdir redmine
cd redmine

3. docker-compose.ymlを作成

touch docker-compose.yml
nano docker-compose.yml

docker-compse.ymlの内容は、下記の記事参照。

sig9.hatenablog.com

※ポートだけ80だとエラー発生していたので、81に変更しています。

version: '3.7'

services:
    redmine:
        container_name: redmine
        image: redmine
        restart: always
        ports:
            - 81:3000
        volumes:
            - ./data/plugins:/usr/src/redmine/plugins
            - ./data/themes:/usr/src/redmine/public/themes
        environment:
            REDMINE_DB_MYSQL: redmine-db
            REDMINE_DB_PASSWORD: redmine

    redmine-db:
        image: mariadb
        container_name: redmine-db
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: redmine
            MYSQL_DATABASE: redmine
        volumes:
            - ./data/db:/var/lib/mysql
        command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci

4. docker-composeを起動

docker-compose up -d

5. Redmineを起動

下記のアドレスにアクセスする。

http://[UbuntuのIPアドレス]:81

初期パスワードは、adminです。
素晴らしいRedmineライフを!!

【追記 2020/4/28】 新しいチケット作成できるようにする方法

チケットの作成に一苦労したので、転ばぬ先の杖。
実際に用いた設定値も記載してありますので、ご参考までにどうぞです。

  1. プロジェクト作成
    [管理] → [プロジェクト] → [+新しいプロジェクト]
    名称に「AIエンジニア」で作成する。

  2. ロールの作成 [管理] → [ロールと権限] → [+新しいロール]
    名称に「管理者」、全権限にチェックして、保存する。
    ※ここが原因でプロジェクトのチケットタブに「新しいチケット」を作成の項目が出ていなかったと思われる。

  3. トラッカーの追加 [管理] → [トラッカー] → [+新しいトラッカー]
    名称に「学習」と入力して、保存する。
    ※チケット作成時の必須項目のため、設定が必要になります。

  4. チケットのステータスの追加 [管理] → [チケットのステータス] → [+新しいステータス]
    名称に、「新規」「進行中」「終了」と入力して、それぞれ作成する。
    ※チケット作成時の必須項目のため、設定が必要になります。

  5. ワークフローの設定 [管理] → [ワークフロー] → [ステータスの遷移]タブ → 「ロール:すべて、トラッカー:すべて」にして[編集]
    遷移できるステータスにすべてチェックを入れて、保存する。

  6. 選択肢の値の設定 [管理] → [選択肢の値] → 各項目[+新しい値]
    「低い」「通常」「高い」「急いで」「すぐに」を追加する。
    ※チケット作成時に必須項目の優先度のドロップダウンリストの選択肢はここで設定できます。

以上、チケットタブから新しいチケットを作成できるようになりました。

【1日目】平凡エンジニアがAIエンジニアになるまでの物語

作業時間

2020/4/27 20:15-22:15 (180分)
ブログ更新 22:15-22:45 (30分)

作業報告

本日はE資格のガイダンスの動画の処理と、もろもろの手続きを行いました。

E資格認定プログラムは、株式会社AVILENさん(以降、Aさん)です。
今後とも、よろしくお願いいたします。

私はAI初心者なので基礎講座+E資格講座の全部乗せコースにしました。
236,000円!税抜き!なので、総額259,600円です!!
私はPayPalから支払いを行いました。 この設定は1Hくらいかかりました。
キャッシュレス決済ポイント目当ての方は、2020/6/30までに買うことをお勧めします。

運よく知り合いから招待いただいたので、10,000円キャッシュバックされるようです。
翌日に来たメールに銀行口座記載して返信しました。月末に振り込まれるようです。
私のブログ読んでいる方でしたら、是非声かけてくだされば、2020年は紹介者になれるかもです。

Aさんへ振り込みが完了したら、動画コンテンツを再生するUMUというツールの紹介動画が届きました。
手順に従って、ユーザー設定等を行います。動画見るのが意外と楽しかったです。
高校時代の予備校の動画授業を思い出しました。懐かしい。。。(遠い目)

どうやら、コースにエントリーしてからスタッフの確認が必要とのことで、
1日待機して、明日から本格的に学習を進めていきたいと思います。

所感

とにかくアウトプットを心がけて、毎日勉強する習慣をつける。

一転語

インプットとアプトプットの黄金比は、3対7。
インプット時間の2倍近くアウトプットに費やすよう意識しましょう。
【学びを結果に変える アウトプット大全 p.29】