
Python - 시각화 기초2
2021. 1. 31. 16:59
📌 Python
package 불러오기 import numpy as np from PIL import Image import matplotlib.pyplot as plt %matplotlib inline 이미지 파일 열기 opencv로도 열수 있지만, shape 순서가 바뀔 때도 있어서 PIL로 여는 것을 개인적으로 선호 path = 'source/dog.jpg' image_pil = Image.open(path) image = np.array(image_pil) 이미지 들여다 보기 image.shape #(세로길이, 가로길이, 색깔이 있으므로 3차원) (734, 1100, 3) np.min(image), np.max(image) (0, 255) 이미지를 열기 전에 shape 및 min, max를 통해서 이미지의 ran..

심화 경사하강법
2021. 1. 31. 15:08
💡 AI/DL
비볼록 함수 지역 최솟값 (Local minimum) 안장점 (Saddle point) 한쪽으로는 최댓값, 다른 쪽으로는 최솟값을 띄는 곳 전반적으로 봤을 때 최댓값도 최솟값도 아니게 되는 지점이 된다. 기울기가 0이 되지만 극값이 아니다. 경사하강법의 여러가지 접근 방법 1. 관성 (Momentum) 관성을 이용해서 계속해서 내려갈 수 있는 힘을 갖게 한다. vt = t-1 번째와 t 번째 사이에 있는 이동벡터 vt는 학습률 x 기울기에 이전 속도에 관성계수를 곱해서 더해준 것 밖에 없다. 2. 적응적 기울기 (AdaGrad) Adaptive gradient는 변수별로 학습률이 달라지게 하는 방법이다. 기존의 gradient descent에 해당하는 부분은 -η·▽f(xt-1)이다. 이 부분에 1/루트..

경사하강법의 수학적 표현
2021. 1. 31. 14:15
💡 AI/DL
미분과 기울기 2D, 3D로도 표현이 가능하다. 편미분을 이용해야 x에 대해서, x1에 대해서, xN-1에 대해서 편미분 할 수 있다. 경사하강법 양수일 때 반대로 이동하기 위해서 (-)를 곱해준다. 최종적으로 최소값을 따라가게 된다. f(x)값이 변하지 않을 때까지 반복한다. 학습률의 선택

백준 알고리즘 - 1991 - 트리 순회
2021. 1. 29. 14:30
⏰ 코딩테스트/백준 알고리즘
문제 이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오. 예를 들어 위와 같은 이진 트리가 입력되면, 전위 순회한 결과 : ABDCEFG // (루트) (왼쪽 자식) (오른쪽 자식) 중위 순회한 결과 : DBAECFG // (왼쪽 자식) (루트) (오른쪽 자식) 후위 순회한 결과 : DBEGFCA // (왼쪽 자식) (오른쪽 자식) (루트) 가 된다. 입력 첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자..

Single Cell RNA Sequencing
2021. 1. 28. 16:32
🧬 Bio/생명정보학
scRNA-seq을 하는 2가지 이유 Bulk RNA-seq 분석이 불가능하므로 Bulk RNA-seq의 조직에 2가지 이상의 세포가 섞여서 전사체들이 bias를 만든다. scRNA-seq은 세포끼리 섞이지 않기 때문이 bias가 없다. 초기 scRNA의 프로토콜 피펫으로 난자 캡쳐 Cell lysis Reverse Transcription cDNA 합성 Poly A tailing PCR 따라서 조직에서 세포를 하나씩 캡쳐하는 기술이 필요하다. Barcode CB (Cell Barcode) : 각각의 세포 구분 UMI (Unique Molecular Identifier) : 각각의 분자 구분 -> 증폭의 noise를 줄일 수 있다. 여러가지 캡쳐 방법이 존재한다. 많은 종류의 세포를 얻을 수 있는 시스템..

프로그래머스 2단계 - 조이스틱
2021. 1. 28. 12:11
⏰ 코딩테스트/프로그래머스
문제 설명 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. 예를 들어 아래의 방법으로 JAZ를 만들 수 있습니다. 만들고자 하는 이름 name이 매개변수로 주어질 때, 이름에 대해 조이스틱 조작 횟수의 최솟값을 return 하도록 solution 함수를 만드세요. 제한 사항 name은 알파벳 대문자로만 이루어져 있습니다. name의 길이는 1 이상 20 이하입니다. 입출력 예 접근법 1 A B C ... K L M N = 0, 1, 2 ... 10 11 12 13 Z Y X ... P O = 1, 2, 3, ... 12 딕셔너리 형태로 저장한다. 각 문자를 k..

최적화 이론의 수학적 표현
2021. 1. 28. 09:39
💡 AI/DL
최적화 이론의 수학적 표현 개념은 이해했으니 이제 수학적으로 어떻게 표현하는지 알아보자. 최적화 이론 (Optimization Theory) f(x)라는 함수가 주어진다. 이 함수는 Loss function이다. 우리는 이것을 minimize 해야한다. 가장 작게 하는 x값이 중요하다. g(x)와 h(x)는 제약 조건이다. 몇개라도 제약을 줄 수 있고 어떻게 제약을 주냐에 따라서 최적화 문제를 어떻게 풀 것인가가 달라지게 된다. 제약 조건에 맞는 x들 중에서 최적해(f(x)의 최소값)를 찾는다. 최소화 문제나 최대화 문제는 사실 동일한 문제이다. 왜냐하면 - 만 붙이면 되기 때문이다. 딥러닝에서는 제약조건을 사용하지 않는다. Analytical method vs Numerical method 최적화 문제..

Gradient Descent 란?
2021. 1. 28. 09:12
💡 AI/DL
최적화 이론 최적화 이론은 함수의 출력이 최대나 최소가 되게하는 입력값을 찾는 것이라고 하였다. 무차별 대입법 (Brute-Force) Brute Force는 최적화 방법의 가장 단순한 방법이다. 실제로 사용할 수는 없다. 범위를 알아야 하기 때문에 아무리 다 대입해봐야 찾지 못할 수도 있다. 주변에 더 작은 f(x)의 값이 있을 수 있기 때문에 무한하게 조사해야 한다. 따라서 계산복잡도가 매우 높다. 이것을 알고리즘이라고 하기엔 어렵다. 경사하강법 (Gradient Descent) Gradient는 기울기를 의미한다. 경사를 따라서 여러번 스텝을 밟아 최적점으로 다가가는 것을 경사하강법이라고 한다. 랜덤한 시작점에서 미분을 하게되면 하나의 기울기를 얻게 된다. 그러면 어느 방향으로 가야 더 내려가는지 ..

Supervised Learning, Unsupervised Learning, Loss function
2021. 1. 28. 08:54
💡 AI/DL
지도학습 vs 비지도학습 지도 학습 : 입력과 함께 정답을 알려준다. 비지도 학습 : 정답이 없이 입력만 잔뜩 받는다. 그러면 컴퓨터가 이렇게 묶어서 주어지는 특성들을 이용해 유용한 정보를 추출해내는 학습법 사람의 지도학습 점점 공부를 하다보면 어떤 것이 나무인지 일반화할 수 있다. 데이터셋이 굉장히 중요하다. 데이터셋을 가지고 학습을 해주면 어떤 데이터가 나무인지 동전인지 개인지 알 수 있다. 학습 매개변수 (Trainable Parameters) 초기에는 a=0, b=1 이다. 점점 학습이 되면서 점점 더 점들을 잘 표현할 수 있는 직선을 가지게 된다. 학습 매개변수가 변화하면 출력이 변하게 된다. 손실 함수 (Loss Function) 손실함수 : 알고리즘이 얼마나 잘못하고 있는지 표현해주는 지표 ..

SNN을 이용한 Multi-Class Classification
2021. 1. 27. 19:50
💡 AI/DL
다중 클래스 분류 (Multi-Class Classification) 이진 분류의 경우 "네", "아니오"로만 답하여 출력이 하나면 된다. 다중 분류의 경우 "이게 뭐냐?" 라고 물었을 때 "개" 라고 답할 수 있어야 한다. 그럼 정답을 어떻게 표현해야 할까? One-Hot Encoding : 정답을 어떻게 표현할 것인가? 전부다 0이고 하나만 1인 경우, 하나만 자극을 받아서 원 핫이라고 한다. 벡터의 각 element가 의미가 있다. 인코딩을 위해 테이블을 만들어 주어야 한다. 총 N개의 레이블이 있어야 한다. One-Hot Encoding의 희소표현 (Sparse Vector) 대부분의 값이 0이고 희소하게 나타나는 벡터를 희소벡터라고 한다. SNN을 이용한 다중 클래스 분류 Softmax를 이용하..

SNN을 이용한 Classification, Sigmoid function
2021. 1. 27. 18:52
💡 AI/DL
분류 (Classification) x0과 x1의 입력을 받는 샘플을 잘 나눌 수 있는 선을 그었다면 Classification 문제를 잘 풀었다고 할 수 있다. 이 선은 Decision Boundary 라고 한다. 로지스틱 회귀 (Logistic Regression) 로지스틱 회귀는 사람, 계, 돼지 등의 범주형 데이터를 대상으로 한다. 그저 구분하기 위함이다. 선형 회귀는 숫자를 대상으로 한다. 범주형 데이터를 분류하는 방향이기 때문에 범주가 다른 서로 다른 데이터를 잘 구분하는 것이 로지스틱 회귀이다. Sigmoid function Sigmoid function은 모든 실수, 즉 무한대에 가까운 입력 값에 대해서도 출력이 가능하고, 이를 확률로 표현할 수 있다. 0을 기준으로 주변을 보았을 때 빠르..

회귀 문제의 이해
2021. 1. 27. 18:17
💡 AI/DL
회귀 (Regression) 단순 선형 회귀 (Linear Regression) 가장 작은 MSE를 찾는 것이 목적이다. 평균 제곱 오차 (Mean Squared Error) 길이와 체중을 추정하는 알고리즘이 있다. y 정답에 대해서 어떤 알고리즘으로 ~y의 추정을 했을 때 5.8의 오차가 있다. 이것을 더 좋은 알고리즘을 통해 ~y의 추정으로 1.2의 오차를 표현할 수 있다. 이 추정은 MSE를 이용한다. 다중 선형 회귀 입력이 여러개가 된다면 변수가 여러개가 되고 각각의 가중치를 곱해주게 된다. 다중 선형 회귀의 기하학적 해석 얕은 신경망과 회귀 알고리즘 Hidden Layer : 출력이 여러개일 때는 매트릭스 형태로 연산하게 된다. M x N Output Layer : 출력이 하나일 때는 매트릭스 ..

Shallow Neural Network의 수식적 이해 (Weight, Bias)
2021. 1. 27. 17:25
💡 AI/DL
얕은 신경망은 입력, 은닉, 출력 계층으로 이루어져 있다. 뉴런의 수학적 표현 뉴런은 입력이 들어오면 각 입력의 가중치가 곱해지고, 그것을 전부 더해줘서 마지막에 활성함수를 통해 출력을 낸다. 출력이 y라면 입력 xi에 가중치 wi를 곱해서 Bias를 더한 후 활성함수 a() 를 통과한다. 입력치와 가중치를 곱한 것은 두 벡터의 내적과 같다. Bias가 없을 경우 뉴런이 표현할 수 있는 그래프는 원점을 지나는 선밖에 없다. 따라서 Bias는 항상 있는 것으로 생각해 주어도 된다. 가중치(weight)란? 뉴런의 연결선 색이 다르다는 것은 입력 데이터가 각기 다른 값으로 뉴런으로 전달되었다는 의미이다. 데이터의 값은 같은데 다른 값으로 전달되려면 이 입력값에 각기 다르게 곱해지는 수치가 있어야할 것이다. ..

Shallow Neural Network를 이용한 분류와 회귀
2021. 1. 27. 17:02
💡 AI/DL
얕은 신경망(Shallow Neural Network)으로 무엇을 할 수 있을까? 회귀 (Regression) 입력과 출력이 있을 때 기대수명(training sample)이 있을 때, 새로운 입력에 대한 출력을 내기 위해서 선을 그어야 한다. 그것이 바로 회귀(Regression) 곡선이다. 엑셀에서는 추세선으로 쓰인다. 회귀라는 것은 입력에 대해서 출력이 정확하게 떨어지지 않는 것에 대해서, 잡음에 대해서 규칙을 찾아서 연속된 값을 추정해 내는 것이다. 분류(Classification) 연속된 값을 출력으로 내는 회귀와 달리, 입력 값에 대해서 특정 범주로 구분하는 작업을 분류(Classification)이라고 한다. 얕은 신경망을 이용한 회귀 활성함수에 대해서 달라진다. 얕은 신경망을 이용한 이진 ..

Shallow Neural Network의 구조
2021. 1. 27. 16:46
💡 AI/DL
신경세포 뉴런에서 입력이 여러개가 들어오고 가중치를 통해 합쳐지게 되고 활성함수를 통해 다음 출력으로 전달된다. 입력 = 수상돌기 활성함수 = 축삭돌기 linear한 특성을 가진 것들을 출력을 내기 전에 활성함수에서 비선형적인 특성을 갖게 할 수 있다. 뉴런의 그래프 표현 노드안에서 연산이 이루어진다. 활성함수를 적용하는 것 Node = 연산 Edge = 데이터가 흘러 들어오는 연결성 인공신경망 (Artificial Neural Network) 노드들이 어떤 형태로든 연결되면 인공신경망이라고 할 수 있다. 모든 DNN은 인공신경망 구조로 구성되어 있다. 하나의 레이어와 다음 레이어가 모두 연결된 것을 Fully-Connected Layer 라고 한다. 얕은 신경망 계층 (Shallow Neural Net..

딥러닝의 역사
2021. 1. 27. 16:10
💡 AI/DL
기계학습은 Feature Extractor가 특징 벡터(Feature Vector)를 가지고 고양이인지 개인지 Classifier가 분류해준다. Classifier만 학습을 하기 때문에 자유도가 낮다. 딥러닝은 Raw data를 인공신경망에 넣어주기만 한다. 모두 컴퓨터에게 맡기면서 더 많은 데이터를 효과적으로 처리할 수 있다. 딥러닝으로 할 수 있는 것들 Ground truth보다 정밀해진 사진을 만들 수 있는 image super resolution 강화학습으로 만들어진 알파고 퍼셉트론 XOR 문제와 AI winter XOR는 선 하나를 아무리 잘 그어도 묶어낼 방법이 없다. 책을 내면서 XOR를 풀 줄 모른다고 하면서 AI winter가 발생한다. 다층 퍼셉트론 역전파 알고리즘과 MNIST 기울기 ..