紙媒体で管理するとなくなりがちなのでブログで進捗などを管理することにしました
※殆どの記事は自分自身のためだけにかいています.他人に見せられるレベルには至っていません...

1万PV

ブログが1万PV行きました.
f:id:umashika5555:20180710142736p:plain
もともと自分用のメモ程度に書いていたブログですが, numpyのメソッドなど読まれているようです.
現在, 忙しくて更新停滞中ですが10月頃からまた更新始めたいです.

【英語】いろいろ表現

日常で気になった表現のメモ
使えそうと思った表現から, 厨ニっぽくて良いと思った表現まで....


You are the last person I want to hear that from.
「アンタだけには言われたくない!」


In this world, good and evil constantly coexist.
「世の中、正義と悪は常に表裏一体だ.」


Whatever it is, the answer is no!
「何を言ったて無理だ」


We are honored.
「ありがたき幸せ」


Hardly anything concrete was accomplished.
「具体的なことはほとんど何も達成されていない.」


This injury dashed her dreams of becoming a surgeon but did nothing to dampen her hopes of becoming a practicing physician.
「このケガは彼女の外科医になるという夢を奪取したが, (このケガは)彼女の内科医になるという希望を減らさなかった.」
dash という動詞は「打ち砕く」という意味があって, この文だと「奪取する」と訳すと, なんか同音でいい感じ.
physicianは内科医でphysicistは物理学者に注意.


Shouldn't you look at the big picture?
「長期的な展望が必要じゃないかな?」
big pictureで「長期的な展望」って意味なのか...

【英語】深層学習への批判的表現

深層学習への批判的な表現をまとめる.
不定期的に更新していく(つもり).


While these depp neural networks enable superior performance, their lack of decomposability into intuitive and understandable components makes them hard to interpret.
深いNNがより優れたパフォーマンスを可能にする一方で, 直感的で理解可能な成分への分解可能性の不足が深いNNの解釈を難しくしている.


We must build "transparent" models that explain why they predict whtat they predict.
深層NNが予測したことをなぜ予測したのかを説明する透明なモデルを構築しなければならない.


There typically exists a trade-off between accuracy and simplicity or interpretability.
正確性と単純さと解釈性の間には明らかにトレードオフが存在している.


Such complexity makes these models hard to interpret.
そのような複雑性がこれらのモデルが解釈をするのを困難にしている.


seemingly unreasonable predictions have resonable explanation.
一見, 合理的でない予測は合理的な説明を持っている.

[Grad-CAM: Visual Explanationns from Deep Networks via Gradient-based Localization]

【英語】深層学習スゴい系の表現集

英語の勉強で深層学習スゴい系の表現集を集めておこうかと思い記事にすることにした.
定期的にアップデートしていくつもり.


Convolutional Neural Networks (CNNs) and other deep networks have enabled unprecedented breakthroughs in a variety of computer vision tasks, from image clasification to object detection, semantic segmentation, image captionning, and more recently visual question answering.

CNNsや他のネットワークは, コンピュータビジョンのタスクで前例のないブレークスルーを起こしている.
コンピュータビジョンのタスクとはクラス分類からオブジェクトの特定, セマンティックセグメンテーション, キャプショニング, より最近の視覚問題の回答などである.


A number of previous works have asserted that deeper representations in a CNN capture higher-level visual constructs.
たくさんの専攻研究は, CNNのより深い表現は高レベルの視覚的な構成物を掴むと断言している.

[Grad-CAM: Visual Explanationns from Deep Networks via Gradient-based Localization]

【urllib】プロキシ設定

proxyの使い方メモ
keras.datasets.mnist.load_data()とかしたいときに, プロキシを通す方法

import urllib
proxy_support = urllib.request.ProxyHandler({'https': 'http://proxy.hogehoge.ac.jp:80'})
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)

画像形式変換

ディレクトリ内のJPGファイルをPNGファイルに一括変換する.

# ディレクトリ内のJPGファイルを探す
find ./ -name "*.jpg"
# ディレクトリ内のJPGファイルの個数を数える
find ./ -name "*.jpg" | wc -l
# JPGファイルをPNGに変換する
for filename in *.jpg;do convert "$filename" "${filename%.jpg}.png";done

【メモ】GANについて

現在GitHubでGANについてまとめてあるリポジトリをまとめた.

YadiraF/GAN

各種GANについてpaper, blog, codeが掲載されている.

  • GAN
  • DEGAN
  • Conditional GAN
  • Wasserstein GAN
  • Info GAN

github.com

jhayes14/GAN

GANについての概要が掲載されている.
日本語訳

GANとは何ですか?
GANは、データセットの基礎となる分布を発見し、人工的に生成する方法です。監督されていない表現学習の分野における方法。最も一般的には、画像生成タスクに適用されます。
GANは、Discriminator(D)とGenerator(G)という2つのニューラルネットワークを組み合わせています。
与えられたデータセットでは、Gは入力としてランダムノイズを取り、データセット内のアイテムに似たものを生成しようとします。 
Dは、実データセット内の項目とGによって生成された人工データの両方の項目を入力として取り込み、2つの項目の間を引き離そうとします。
 GとDは共同して訓練される。重要な点は、GとDはお互いのバランスをとる必要があり、
どちらも互いの仕事に関してあまりにも強くならないことです。
もし、GがフーリングDで非常に良くなるなら、これは通常、Gが分布内の重要な特徴と一致しないDの分類プロセスの弱点を発見したためである。 
Dが人工画像を実際の画像と簡単に区別できるのであれば、Gの重みを正しい方向に更新することは非常に遅いプロセスであり、
本質的にGはこのプロセスから学ぶことができません。

github.com

carpedm20/DCGAN-tensorflow

「画像を生成するやつ」として知られるやつ
Qiitaにアイドルの顔や, ドット絵のキャラを生成するような記事があった気がする.
github.com

hindupuravinash/the-gan-zoo

リポジトリ名の「GANの動物園」の通り, たくさんの種類のGANについて, 元になったArXivの記事を掲載している.
github.com

zhangqianhui/AdversarialNetsPapers

目的(適応先) ごとにまとめてある.
github.com

dongb5/GAN-Timeline

GANについての論文を掲載している.
github.com

eriklindernoren/Keras-GAN

github.com

wiseodd/generative-models

github.com

その他GANについて100favを超えるリポジトリ

https://github.com/mingyuliutw/UNIT
https://github.com/awjuliani/TF-Tutorials
https://github.com/carpedm20/DiscoGAN-pytorch
https://github.com/vanhuyz/CycleGAN-TensorFlow
https://github.com/Zardinality/WGAN-tensorflow
https://github.com/junyanz/iGAN
https://github.com/burness/tensorflow-101
https://github.com/shekkizh/WassersteinGAN.tensorflow
https://github.com/openai/improved-gan
https://github.com/martinarjovsky/WassersteinGAN
https://github.com/yunjey/StarGAN
https://github.com/bernhard2202/improved-video-gan
https://github.com/LantaoYu/SeqGAN
https://github.com/zsdonghao/text-to-image
https://github.com/carpedm20/BEGAN-tensorflow
https://github.com/hanzhanggit/StackGAN
https://github.com/devnag/pytorch-generative-adversarial-networks
https://github.com/jonbruner/generative-adversarial-networks
https://github.com/makegirlsmoe/makegirlsmoe_web
https://github.com/openai/InfoGAN
https://github.com/tjwei/GANotebooks
https://github.com/NELSONZHAO/zhihu
https://github.com/fxia22/PixelDTGAN
https://github.com/bastianallgeier/gantti
https://github.com/sjchoi86/advanced-tensorflow
https://github.com/AYLIEN/gan-intro
https://github.com/osh/KerasGAN
https://github.com/255BITS/HyperGAN
https://github.com/phillipi/pix2pix
https://github.com/KupynOrest/DeblurGAN
https://github.com/jacobgil/keras-dcgan
https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
https://github.com/SKTBrain/DiscoGAN
https://github.com/shaoanlu/faceswap-GAN
https://github.com/tensorlayer/dcgan

【Python】matplotlibで最低限のグラフをかけるようにする

TeXで表示させるため, グラフが必要な時期になってきた.
Pythonで最低限のグラフを描画する方法をメモ.
sigmoid関数のプロット

import numpy as np
import matplotlib.pyplot as plt

# 関数定義
x = np.linspace(-8, 8, 100)
y = 1/ (1+np.exp(-x))

# 垂直線
plt.vlines(0.0, -0.1, 1.1, colors="r", linestyle="dotted", label="")
# 水平線
plt.hlines(0.0, -8.0, 8.0, colors="k", linestyle="dotted", label="")
plt.hlines(0.5, -8.0, 8.0, colors="k", linestyle="dotted", label="")
plt.hlines(1.0, -8.0, 8.0, colors="k", linestyle="dotted", label="")

# sigmoid 関数
plt.plot(x, y, label="sigmoid function")

# y軸の設定
yticks = [0,0.5,1.0]
plt.yticks(yticks)

# 軸の名称
plt.xlabel(r"z")
plt.ylabel(r"$\phi(z)$")

# 凡例
plt.legend(loc="upper left")

# 図の保存
plt.savefig("./sigmoid.png")
plt.show()

f:id:umashika5555:20180122130503j:plain
TeXファイルに貼り付ける場合は, .epsにしておく必要がある場合がある.
convert コマンドでファイルの種類を変更する.

$ convert sigmoid.png sigmoid.eps

【メモ】TinyXML

ある処理でPythonXML扱うモジュール使ってたんだけど, さっき見た論文でTinyXMLを使うと書いてあった.
本質ではないけど, そういうツールがあることを知らなかったのでメモしておく.

来年度の目標メモ

2018年になり約20日, 現在卒論に追われていて精神的にかなりキツイ.
本日も徹夜し現在朝8時, ようやく寝ようとしている.
スマホを片手に来年度の目標を書く. 来年度は休学しようと思っているので, 時間が出来そう. やりたいことをまとめる. 

ディープラーニング理論

ディープラーニングの理論を数学的に、またフルスクラッチ実装することでブラックボックスを少しでも解明していきたい. 現在主流ではない数値微分による方法なども敢えて実装し性能比較を行ってみたい. Courseraとかも興味はある.

ディープラーニング応用

ArXivの記事を一日一本は(精読でなくてもよいので)読みたい. 気になった方法はgit cloneして試してみたい. 独自のアニメデータセットなども利用してネタになったらQiitaなどに投稿したい. 

機械学習 / 統計理論

機械学習の有名手法のフルスクラッチ実装, また自分は統計学を蔑ろにしてきたので統計学についても本を読み漁りたい. また自分の畑を広げるという意味で解析や確率論, 統計力学などもできたらやりたい.

機械学習 / 統計応用

やっぱり, これに関してはkaggleに参加する事が一番だと思う. 今年は少ししか参加できなかったけど, 結構慣れてきたので来年はもっと参加したい. Kernelを読んで芸術的な可視化や特徴量抽出についても学んでいきたい.

新しい言語を学ぶ

研究を一年間やってきてPythonに対する嫌悪感が凄くなった. もちろん機械学習に関してはscikit-learnやkerasといった素晴らしいライブラリがあるのでそこは継続して使いたいと思うが, 事務処理などで使うと遅いし途中で止まる可能性あるし, 何より書きづらいしであの忌み嫌っていたC言語でさえ愛おしくなってしまった. なにやら最近はrustやgoといった言語が流行っているらしいので勉強して見る価値は大いにありそう. 

ソフトウェア工学

これも研究を通して思ったのだが自分のコードがクソすぎて決まった規格がほしいと思った. コードに関する規約について勉強する必要がある. コードコンプリートを読みたい.

コンパイラ作る

AndroidのDalvik Bytecodeが少し読めるようになってきたので, まずレジスタなどをより理解し, デコンパイラや制御フローグラフなどを作るツールをつくりたい.