[자료구조] 배열(array)
데이터 구조
데이터 구조 정의
데이터 값의 모임으로 각 원소들이 논리적으로 정의된 규칙에 의해 나열된 구조이다.
데이터 구조 목적
자료에 대한 처리를 효율적으로 할 수 있도록 자료를 구분하여 표현하는 것이다.
필요성
예를 들어, 새로 유입된 고객의 정보를 DB에 저장한다고 가정해보자.
가장 먼저 생각할 수 있는 방법은 DB 전체를 순회하면서 고객을 찾은 뒤 업데이트를 하는 방법이 있을 것이다.
하지만 이 방법은 매 업데이트마다 전체 DB를 순회하기에 데이터의 양에 따라 기하 급수적으로 시간이 증가할 것이다.
또 다른 방법으로는 해시 테이블을 사용하는 것이다. 해시 테...
[백준] 에디터
문제
import sys
input = sys.stdin.readline
class Node:
def __init__(self, value=None):
self.value = value
self.prev = None
self.next = None
s = input().rstrip()
n = int(input())
head = Node()
tail = Node()
head.next = tail
tail.prev = head
cur = head
for ch in s:
new_node = Node(ch)
new_node.prev = cur
n...
[DL Basic] 딥러닝의 문제점 & 경사 하강법
딥러닝의 문제
딥러닝의 핵심은 활성화 함수가 적용된 은닉층이 쌓이면서 비선형 영역을 표현하는 것이다. 은닉층이 쌓이면서 데이터를 더 잘 분류할 수 있지만 다음의 문제점이 존재한다.
과적합 문제 발생
우리가 모델 학습 시에 사용하는 훈련 데이터는 현실 세계의 데이터 중 극히 일부이다. 이 훈련 데이터만을 과하게 학습하면 훈련 데이터에 대해서는 좋은 성능을 보이겠지만, 훈련 데이터에 포함되지 않은 데이터에 대해서는 오차가 증가할 수 있다.
위와 같이 과적합은 훈련 데이터를 과하게 학습하여 실제 데이터에 대한 오차가 증가하는 현상을 말한다.
이런 과적합 문제를 막기 위해...
[자료구조] 재귀(Recursion)
동적 계획법(Dynamic Programming)
작은 문제를 먼저 해결하고, 그 결과를 저장하여 반복 계산을 줄이는 최적화 기법
주로 최적 부분 구조를 지는 중복된 하위 문제들을 분할 정복으로 풀이하는 문제 해결에 사용된다.
이미 계산한 값을 저장하여 다시 계산하지 않게 해주는 메모이제이션과 작은 문제부터 해결하여 테이블을 채워가는 타블레이션의 특징이 있다.
재귀
알고리즘 자신을 사용하여 정의된 알고리즘을 재귀적이라고 한다.(비재귀적 or 반복적 알고리즘과 대조된다.)
계단에 비유해보면, 계단 끝까지 내려간 뒤에, 다시 올라오는 느낌으로, 우선 종료 조건까지 계속 재귀하고 종료 조...
[DL Basic] 활성화 함수 & 손실 함수
활성화 함수(Activation Function)
활성화 함수는 가중 합의 결과를 일정 기준에 따라 값을 변화시키는 비선형 함수이다. 이 활성화 함수는 선형으로는 해결할 수 없는 즉, 비선형적으로 분류되는 문제를 해결할 수 있도록 비선형성을 추가해주는 역할이다.
대표적으로 Sigmoid, Tanh, ReLU, Softmax 등이 있다.
Sigmoid = $\frac 1{1+e^{-x}}$
가중 합의 결과를 [0 ~ 1] 사이에서 비선형 형태로 바꿔준다.
주로 로지스틱 회귀 같은 분류 문제에서 주로 사용했다.
하지만 모델의 깊이가 깊어지며 발생하는 기울기 소멸 문...
99 post articles, 20 pages.