전체 글
-
[모두를 위한 딥러닝] 7. Learning rate, Overfitting and RegularizationAI/모두를 위한 딥러닝 2020. 12. 1. 18:32
# Learning rate (학습률) Gradient Descent를 진행할 때, 각 step마다 어느 정도씩 진행할지 Learning rate(학습률)을 지정하여 설정할 수 있다. (위 그림에서 알파값이 학습률을 나타낸다.) 학습률을 너무 큰 값으로 설정하면 스텝마다 큰 폭으로 학습이 진행되어 왼쪽 그림처럼 w값이 발산해버리는 오버슈팅(Overshooting) 문제가 발생할 수 있다. 반대로 학습률을 너무 작은 값으로 설정하면 스텝마다 작은 폭으로 학습이 진행돼 오른쪽 그림처럼 학습이 더뎌지는 문제가 발생한다. 학습률 설정에 정답은 없지만 처음에 0.01의 학습률을 설정하고 양상에 따라 조절하는 것도 한 방법이 될 수 있다. # 데이터 전처리 (Preprocessing) 데이터들을 다루다보면 x da..
-
[모두를 위한 딥러닝] 6. Multi-Class Classification - SoftmaxAI/모두를 위한 딥러닝 2020. 12. 1. 03:35
# 다중 클래스 분류 (Multi-Class Classification) 앞선 로지스틱 회귀에서는 두 가지 선택지만 결정했다. 만약 세 가지 이상의 클래스를 두고 결정해야 하는 상황이라면 다중 클래스 분류(Multi-Class Classification)를 한다. 위와 같이 시간과 출석 여부라는 두 가지 변수에 대하여 A, B, C 세 가지 성적을 매기는 상황을 가정해보자. 성적 분포의 그래프는 오른쪽 그래프와 같다. 성적이 표현된 그래프를 로지스틱 회귀를 사용한다고 생각하고 A에 대해, B에 대해, C에 대해 각각 이진 분류한다면 위와 같이 3가지 선을 그을 수 있다. A인지 아닌지, B인지 아닌지, C인지 아닌지를 구별하는 세 가지 선을 그은 것이다. 이 3가지 식을 행렬로 표현하면 왼쪽 그림과 같다..
-
[알고리즘] 다이나믹 프로그래밍 (Dynamic Programming)Computer Science/자료구조 & 알고리즘 2020. 11. 27. 20:14
# 다이나믹 프로그래밍 (Dynamic Programming) 현대에서 컴퓨터를 사용해도 해결하기 어려운 문제는 최적의 해를 구하는데 매우 많은 시간을 요하거나 메모리 공간을 매우 많이 요구하는 문제들이다. 그런데 어떠한 문제는 메모리 공간을 조금 더 사용하면 연산 속도를 비약적으로 상승시킬 수 있는 방법이 있다. 메모리를 적절히 사용하여 수행 시간 효율을 비약적으로 상승시키는 방법을 다이나믹 프로그래밍(Dynamic Programming)이라고 하며 동적 계획법이라고도 부른다. 다이나믹 프로그래밍은 1. 큰 문제를 작게 나누고, 2. 같은 문제라면 한 번 씩만 풀어 문제를 효율적으로 해결하는 알고리즘이다. 즉, 다이나믹 프로그래밍은 다음의 두 조건을 갖췄을 때만 사용가능하다. 1. 최적 부분 구조 (O..
-
[모두를 위한 딥러닝] 5. Logistic RegressionAI/모두를 위한 딥러닝 2020. 11. 25. 20:02
# 이진 분류 (Binary classification) 이진 분류(Binary Classification)는 어떤 문제에 대하여 두 가지 중 하나를 결정하는 문제이다. 메일이 스팸메일인지 아닌지, 페이스북 피드를 보여줄지 말지, 방금 진행한 신용카드 거래가 사기인지 아닌지 판단하는 것이 이진 분류의 예다. 일반적으로 결정해야할 두 가지 결과는 0, 1로 인코딩해 사용한다. # 로지스틱 회귀 (Logistic Regression) 1. 로지스틱 회귀와 시그모이드(Sigmoid) 함수 이진 분류를 가장 잘 해결할 수 있는 방법으로 로지스틱 회귀(Logistic Regression)가 있다. 기존의 선형 회귀는 시험에 통과할 사람을 정확히 예측하는게 어렵고, 입력값이 커질수록 출력값이 0~1 범위를 크게 벗..
-
[모두를 위한 딥러닝] 4. multi-variable linear regressionAI/모두를 위한 딥러닝 2020. 11. 25. 01:28
# Mulit-variable linear regression 앞에서 공부했던 선형 회귀는 하나의 변수에 대하여 출력을 계산했다. 그러나 위 시험 점수 예측 사례의 퀴즈 1 점수, 퀴즈 2 점수, 중간고사 점수처럼 여러개의 변수를 고려하여 회귀를 진행할 땐 어떻게 해야할까? 기존의 선형 회귀 식은 H(x) = Wx + b였다. 다변량 선형 회귀는 위와 같이 기존 선형 회귀와 유사하게 새로운 가중치 w를 각각의 새로운 변수 x들에 곱해주면 된다. 다변량 선형 회귀의 비용함수 역시 선형 회귀의 비용함수 식을 그대로 가져오되 Hypothesis만 다변량 회귀식으로 적용하여 사용한다. Hypothesis를 n개의 변수에 대하여 일반화하면 위와 같다. 그러나 n의 값이 커질수록 식이 길어서 이를 표현하기 어려워지..
-
[자료구조] 트리(Tree), 트리 순회(Tree Traversal)와 이진 탐색 트리(Binary Search Tree)Computer Science/자료구조 & 알고리즘 2020. 11. 23. 20:26
# 트리 (Tree) 가계도와 같은 계층적인 구조를 표현할 때 사용하는 자료구조이다. - 루트 노드 (root node): 부모가 없는 최상위 노드 ex) A - 단말 노드 (leaf node): 자식이 없는 노드 ex) G, E, F - 크기 (size): 트리에 포함된 모든 노드의 개수 ex) 7개 - 깊이 (depth): 루트 노드부터 해당 노드까지의 거리 ex) A: 0 / B, C: 1 / D, E, F: 2 / G: 3 - 높이 (height): 깊이 중 최댓값 ex) 3 - 차수 (degree): 각 노드의 (자식 방향) 간선 개수 ex) A, B: 2 / C, D: 1 - 트리의 크기가 N일 때, 전체 간선의 개수는 N - 1개 # 트리의 순회 (Tree Traversal) 트리 자료구조에..
-
[자료구조] 우선순위 큐(Priority Queue)와 힙(Heap)Computer Science/자료구조 & 알고리즘 2020. 11. 23. 15:58
# 우선순위 큐 (Priority Queue) 우선순위 큐는 우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조이다. 데이터를 우선순위에 따라 처리하고 싶을 때 사용한다. 우선순위 큐는 리스트(List), 힙(Heap) 두가지 방식으로 구현 가능하다. 리스트의 경우 데이터를 단순히 리스트의 뒤에 삽입하고 우선순위를 기준으로 선형탐색한다. 따라서 삽입시간은 시간복잡도가 O(1)이지만, 삭제시간은 선형탐색으로 인해 O(N)이 소요된다. 반면, 힙은 삽입시간, 삭제시간 모두 O(logN)의 시간복잡도를 보장한다. 힙의 또다른 특징은 단순히 N개의 데이터를 힙에 넣었다가 모두 꺼내는 작업만으로도 정렬이 수행된다는 점이다. 이를 힙 정렬(Heap Sort)이라 하는데, 힙 정렬은 O(NlogN)의 시간 복..
-
[백준 1932번] 정수 삼각형Coding Test/백준 2020. 11. 21. 17:02
# 문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다. # 입력 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. # 출력 첫째 줄에 합이 최대가 되는 경로에 있는 수의 합을 출력한다...