전체 글 228

[머신러닝] 오차 역전파 - 오차 역전파 식 유도, 공식

오차 역전파(Back Propagation) 편미분과 연쇄 법칙(chain rule)을 이용하여 미분을 분리한 후, 수학 공식으로 나타내어 계산하는 방법 오차 역전파는 행렬로 표현되는 수학공식을 이용하기 때문에 빠른 계산이 가능하다. (수치 미분을 쓸 때보다 훨씬 더 시간을 단축할 수 있다.) 시그모이드(sigmoid) 함수의 미분 $ \begin{eqnarray} \frac{\partial \mathrm{sigmoid} (z)}{\partial z} & = & \frac{\partial}{\partial z} \cdot \frac{1}{1+e^{-z}} \\ & = & \frac{\partial}{\partial z} \cdot (1+e^{-z})^{-1} \\ & = & \frac{e^{-z}}{(1..

머신러닝 2020.08.11

[LIS] BOJ 14002 가장 긴 증가하는 부분 수열 4

https://www.acmicpc.net/problem/14002 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 문제 해결 알고리즘 1. 배열(v)과, 수열 저장 배열(dp)를 선언한다. 2. 수열 저장 배열(dp)에 처음(first)에는 처음부터의 가장 긴 증가하는 부분 수열의 원소 개수를 저장하고, 두 번째(second)에는 바로 전의 원소의 인덱스를 저장하도록 설정한다. 수열의 전에 아무 원소도 없는 원소에는 second..

[선형대수학] 행렬 - 종류, 연산

1. 행렬 성분(entry), 행(row), 열(column) 성분(entry) : 행렬 안에 배열된 원소 ex) $a_{ij}$ = i행 j열에 위치한 원소 행(row) : 행렬의 가로줄 열(column) : 행렬의 세로줄 $m \times n$ 행렬(m by n, m행 n열짜리 행렬) : m개의 행과 n개의 열로 이루어진 행렬 ex) $(a_{ij})_{m\times n}$ or $ (a_{ij})$ 행렬의 종류 주대각선(Main diagonal) : 행렬의 왼쪽 위에서 오른쪽 아래를 가르는 선 대각 성분(Diagonal entry) : 주대각선에 걸치는 $(i,\,i)$성분 $ A = \begin{pmatrix} \textcolor{red}{a_{11}} & a_{12} & a_{13} \\ a_{..

[자료구조, 리스트] BOJ 5397 키로거

https://www.acmicpc.net/problem/5397 5397번: 키로거 문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거� www.acmicpc.net 문제 해결 알고리즘 1. 리스트(lt)를 선언하고, 그 리스트의 iterator(lt_iter)의 위치를 리스트가 시작하는 부분(lt.begin())으로 선언해준다. 2. 입력 받은 string(str)의 길이(str_len)만큼 현재 위치(str_idx)가 도달하면 키로거 탐색을 끝내는 식으로 구현한다. string에서의 현재 위치(str[str_idx])에 2-1 ''가 존재하면, iterator가 리스트의 ..

[머신러닝] 표기법과 피드 포워드

표기법(notation) 계층 간 가중치 표기법(weight notation) 가중치 $w^{(2)}_{21} \Rightarrow$ 계층 2의 노드에 적용되는 가중치로서, 1 계층의 노드 1에서 2 계층의 노드 2로 전달되는 신호를 강화 또는 약화시키는 가중치(즉, 가중치에서의 아래 숫자는 다음 계층의 노드 번호가 먼저 나온다.) 노드의 바이어스 표기법(bias notation) 바이어스 $b^{(2)}_{1} \Rightarrow $ 계층 2에 있는 첫 번째 노드에 적용되는 바이어스 노드의 선형 회귀 계산 값 표기법(linear regression notation) 선형 회귀 계산 값 $x^{(2)}_{2} \Rightarrow$ 계층 2의 두 번째 노드 선형 회귀(linear regression) ..

머신러닝 2020.08.04

[머신러닝] 신경망, 인공지능, 딥러닝

딥러닝 ⊂ 머신러닝 ⊂ 인공지능 인공지능(AI) : 인간의 지적능력을 컴퓨터를 통해 구현하는 기술 머신러닝(ML): 컴퓨터가 데이터를 통해 스스로 학습해 예측이나 판단을 제공하는 기술 신경망(Neural Network) 신경 세포 뉴런(Neuron)은 이전 뉴런으로부터 입력 신호를 받아 또 다른 신호를 발생시킨다. 그러나 입력에 비례해서 출력을 내는 형태 ($y = Wx$)가 아니라, 입력 값들의 모든 합이 어느 임계점(threshold)에 도달해야만 출력 신호를 발생시킨다. $\Rightarrow$ 이처럼 입력 신호를 받아 특정 값의 임계점을 넘어서는 경우에, 출력을 생성해주는 함수를 활성화 함수(activation function)라고 하는데, 지금까지 사용해왔던 로지스틱 회귀(Logistic Reg..

머신러닝 2020.07.26

[BFS] BOJ 17086 아기 상어 2

https://www.acmicpc.net/problem/17086 17086번: 아기 상어 2 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸의 개수가 한 개 이상인 입력만 주어진다. www.acmicpc.net 문제 해결 알고리즘 1. 물고기 배열(arr)에 모든 입력을 받은 후, 큐(q)에 물고기가 있는 위치를 전부 저장한다. 2. 큐에 있는 위치들을 차례로 방문 확인 배열(visited)에서 탐색(bfs)한 후, 각 위치마다 가장 가까운 물고기와의 거리를 기록한다. 3. 탐색을 다 끝낸후, 물고기 방문 확인 배열(visited)에서 위치 중 가장 큰 숫자를 찾아서 출력(r..

[머신러닝] 로지스틱 회귀 - 분류, 시그모이드 함수, 손실 함수

분류(Classification) Training Data 특성과 관계 등을 파악한 후, 미지의 입력 값에 대해 그 결과가 어떤 종류의 값으로 분류될 수 있는지 예측하는 것 로지스틱 회귀(Logistic Regression) 알고리즘 1. Training Data 특성과 분포를 나타내는 최적의 직선을 찾고(Linear Regression) 2. 그 직선을 기준으로 데이터를 위/아래, 또는 왼쪽/오른쪽 등으로 분류(Classification) 해주는 알고리즘 $\Rightarrow$ 이러한 Logistic Regression은 Classification 알고리즘 중에서도 정확도가 높은 알고리즘이다. 시그모이드 함수(sigmoid function) 출력 값이 1 또는 0 만을 가져야만 하는 분류(classi..

머신러닝 2020.07.24

[BFS] BOJ 16236 아기 상어

https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가�� www.acmicpc.net 문제 해결 알고리즘 1. 우선 물고기 배열(arr)에 입력 값들을 받으면서, 현재 아기 상어가 있는 위치를(start_x, start_y) 저장한다. 2. 아기 상어가 있는 위치에서 시작하여, 물고기 배열(arr)에 모든 위치에 몇 초만에 도착할 수 있는지 방문 확인 배열(visited)에 저장한다(자기 자신의 크기보다 큰 물고기가 있는 위치는 제외). 3. 그 중, 물고기 배열(arr..