신경망(Neural Network)

|

Neural Network

퍼셉트론을 이용하면 복잡하고 어려운 함수도 표현이 가능합니다. 하지만, 가중치를 설정하는 작업을 사람이 수동으로 해줘야하는 불편함이 여전히 존재합니다.

신경망(Neural Network)은 이러한 문제점을 해결해줍니다. 가중치를 학습을 통해서 자동으로 획득하고 수정할 수 있습니다.


Simple Neural Network

신경망을 간단하게 그림으로 표현하면 다음과 같습니다.

Image

데이터가 입력되는 쪽을 Input, 결과값이 출력되는 쪽을 Output, 그리고 그 사이를 Hidden이라고 합니다. 층이 많아지면 아래의 그림과 같은 모습이 됩니다.

Image


퍼셉트론과 신경망

신경망은 퍼셉트론과 크게 다르지 않습니다. 퍼셉트론은 다음과 같은 함수로 이루어져 있습니다.

[output = \begin{cases} 0 ( w_1 x_1 + w2 x_2 + … + w_i x_i \le 0 )
1 ( w_1 x_1 + w2 x_2 + … + w_i x_i > 0 ) \end{cases}]

이걸 좀 더 간결하게 표현하면 다음과 같이 표현할 수 있습니다.

[y = h(b + w_1 x_1 + w_2 + x_2 + … w_i x_i)
h(x) = \begin{cases} 0 ( x \le 0 )
1 ( x > 0 ) \end{cases}]

입력 신호의 총합이 h(x)라는 함수를 거쳐서 변환이 되며, 그 변환된 값이 y 출력값이 됩니다.


Activation Function

위에서 나온 h(x) 함수는 활성화 함수(Activation Function)라고 합니다. 입력 신호의 총합을 출력 신호로 변환해주는 함수입니다.

위의 수식에서 $ b + w_1 x_1 + w_2 + x_2 + … w_i x_i $ 부분을 a라는 변수로 치환하면 다음과 같은 식으로 표현이 됩니다.

[a = b + w_1 x_1 + w_2 + x_2 + … w_i x_i
y = h(a)]

그림으로 표현하면 아래와 같은 그림이 되고,

Image

조금 더 간결하게 표현하면 다음과 같이 표현됩니다.

Image

컨테이너 실행 명령어

|

Docker Container

Docker 컨테이너는 Docker 이미지로부터 생성할 수 있습니다. 이미지 하나로부터 동일한 컨테이너를 여러개 생성할 수 있으며, 각 컨테이너는 샌드박스(Sandbox) 형태로 되어 있어 각 컨테이너간 간섭이 없습니다.


컨테이너 생성

docker run <image name> 명령어를 이용해서 컨테이너를 생성할 수 있습니다. run 명령어로 실행한 컨테이너는 주어진 명령이 끝나거나 사용자 명령에 따라 종료됩니다.

예를 들어 다음과 같이 명령을 내리면

$ docker run ubuntu echo "hello"

hello

화면에 ‘hello’라는 메시지만 출력하고 해당 컨테이너는 종료됩니다. 해당 컨테이너의 상태 여부는 docker ps -a 명령어를 이용해서 조회 가능합니다.

docker ps -a
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS                     PORTS               NAMES
303c05fe9c03        ubuntu                  "echo hello"             4 seconds ago       Exited (0) 3 seconds ago                       dreamy_goldstine

STATUSExited 상태인 걸 확인할 수 있습니다.


컨테이너 목록 조회

컨테이너 목록은 docker ps 명령어를 이용해서 조회할 수 있습니다. 여기에 -a 옵션을 붙이면 종료된 컨테이너 정보까지 조회됩니다.

$ docker ps -a


컨테이너 시작/재시작/정지

다음 명령어로 컨테이너를 시작하거나 재시작, 정지할 수 있습니다.

$ docker start <container name>

$ docker restart <container name>

$ docker stop <container name>


현재 실행중인 컨테이너에 접속하기

docker attach 명령어로 현재 실행중인 컨테이너에 접속할 수 있습니다.

$ docker attach <container name>


외부에서 컨테이너 안의 명령 실행하기

docker exec 명령어로 컨테이너 밖에서 컨테이너 안의 명령을 실행할 수 있습니다.

$ docker exec <container name> <command>

ex) docker exec snowdeer_docker echo "Hello, SnowDeer"

exec 명령어는 현재 실행 중인 컨테이너에만 사용할 수 있으며, 중지 상태의 컨테이너에는 사용할 수 없습니다.


컨테이너 삭제

docker rm 명령어로 컨테이너 삭제를 할 수 있습니다. 컨테이너 삭제는 rm 명령어이며, 이미지 삭제는 rmi 입니다.

$ docker rm snowdeer_docker

docker run 명령을 이용해서 컨테이너를 실행할 때 --rm 옵션을 붙이면 컨테이너 종료시 해당 컨테이너가 자동으로 삭제되기 때문에 편리하게 연습용으로 편리하게 사용할 수 있습니다.

Docker Hub로부터 이미지 검색 및 다운로드

|

Docker Hub

Docker Hub에는 10만개가 넘는 Docker 이미지들이 존재합니다. 직접 Docker Hub 홈페이지를 방문해도 되고 터미널에서 커맨드 명령어로 원하는 이미지를 검색하거나 다운로드할 수 있습니다.

여기서는 터미널에서 커맨드 명렁어로 이미지를 검색하고 다운로드하는 방법을 포스팅합니다.


이미지 검색

Docker 이미지는 다음 명령어를 이용해서 검색할 수 있습니다.

$ docker search <image name>

ex) docker search ubuntu


이미지 다운로드

pull 명령어를 이용해서 원하는 이미지를 다운로드할 수 있습니다. 이미지 이름 뒤의 <tag>를 이용하여 원하는 버전의 이미지를 다운로드할 수 있으며, 생략할 경우 기본값으로 latest 태그가 입력됩니다.

$ docker pull <image name>:<tag>

ex) docker pull ubuntu

또는 run 명령어를 이용해서 원하는 이미지를 다운로드하면서 해당 이미지의 컨테이너를 실행할 수 있습니다. run 명령어는 로컬에 이미지가 있을 경우 해당 이미지로부터 컨테이너를 생성하며, 로컬에 이미지가 없을 경우 이미지를 다운로드합니다.

$ docker run -i -t --name <container name> <image name>

ex) docker run -i -t --name hello ubuntu


이미지 리스트 조회

docker images 명령어를 이용해서 로컬에 설치된 이미지 리스트를 확인할 수 있습니다.

$ docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              0458a4468cbc        10 days ago         112MB
hello-world         latest              f2a91732366c        2 months ago        1.85kB


이미지 삭제

이미지 삭제는 rmi 명령어를 이용합니다.

$ docker rmi <image name>:<tag>

ex) docker rmi ubuntu:latest

Docker 유저 권한 추가(sudo 없이 Docker 명령어 실행하는 방법)

|

유저 권한 추가

Docker 명령어를 실행하기 위해서는 매번 sudo를 입력해야 합니다. sudo 명령어 없이 Docker를 사용하기 위해서는 Docker가 사용하는 그룹에 사용자 ID를 추가하면 됩니다.

sudo gpasswd -a <사용자ID> docker

$ sudo gpasswd -a snowdeer docker

그리고 나서 로그아웃 후 로그인하면 됩니다.

파이썬 가상환경 conda vs virtualenv

|

conda vs virtualenv

condavirtualenv의 차이는 다음과 같습니다.

Task Conda package and environment manager command Pip package manager command Virtualenv environment manager command  
패키지 설치 conda install pip install 미지원  
패키지 업데이트 conda update –name pip install –upgrade 미지원  
삭제 conda remove –name pip uninstall 미지원  
가상환경 생성 Create an environment conda create –name python 미지원 cd ; virtualenv
가상환경 활성화 source activate 미지원 source //bin/activate  
가상환경 비활성화 source deactivate 미지원 deactivate  
이용가능한 패키지 검색 conda search pip search 미지원  
특정 소스로부터 패키지 설치 conda install –channel pip install –index-url 미지원  
설치된 패키지 리스트 조회 conda list –name pip list 미지원  
가상환경 리스트 조회 conda info –envs 미지원 virtualenv wrapper 설치 후, lsvirtualenv 실행  
파이썬 설치 conda install python=x.x 미지원 미지원  
파이썬 업데이트 conda update python * 미지원 미지원