전체 702

[백준]6086 최대유량 #최대유량#에드몬드_카프#파이썬

1. 풀이 최대유량을 구해주기 위해선, 시점부터 종점까지 (1)가능한 경로와 경로상의 최소 유량 찾기, (2)현재상태를 업데이트 하는 과정을 더이상 가능한 경로가 없을 때 까지 해주면 된다. 각각의 과정에 대한 구체적인 설명은 다음과 같다. (1) 가능한 경로와 그때의 유량 찾기 - bfs 경로를 찾을 때는 bfs로 탐색을 한다. 이때 한번 탐색한 노드는 다시 탐색하지 않기 위해 (흔히 bfs문제를 풀 때 하는) visited노드로 관리를 해줘야 한다. 이때 단순히 방문하면 1, 그렇지 않으면 0으로 하는게 아니라 해당 노드의 경로상의 직전의 노드를 저장해놓는다 (그래서 이름도 visited가 아니라 prev로 한다). 왜냐하면 (2)현재상태를 업데이트 에서 경로를 따라가며 상태를 업데이트 해야 하기 때..

알고리즘/graph 2020.08.23

batch 사이즈에 따른 학습 형태

batch사이즈가 작을수록 데이터 하나하나의 값을 잘 반영하지만, 많이 돌아간다. 반면 batch사이즈가 클 수록 여러가지 데이터가 평균을 잘 반영하기 때문에 global minimum을 향해 잘 간다. 그리고 batch 사이즈가 클 수록 다양한 데이터들로 cost function을 구성하기 때문에 우리가 원하는 둥근 밥그릇 모양이 만들어 진다. 1. batch size=2 (2개의 데이터로 cost function이 만들어진것) 2. batch size = 4 3. batch size = 32 (보통 데이터를 학습할 때 batch size는 32가 적절하다) * 출처 : 패스트캠퍼스 수학적으로 접근하는 딥러닝 올인원 패키지 Online.

collections 패키지의 Counter함수를 이용한 빈도 확인

1. 설명 리스트를 입력했을 때 빈도를 측정해주는 함수이다. 다음과 같은 word 리스트가 있다고 하자. ['존경', '국민', '여러분', '경자년庚子年', '독립운동', '임시정부', '수립', '년', '해', '올해', '혁명', '주년', '민주화운동', '주년', '년', '전', '촛불', '민주공화국', '숭고', '정신', '정의', '안전', '평화', '행복', '나라다운', '나라', '국민', '준엄한', '명령', '우리', '정부', '과감', '변화', '선택', '경제', '사회', '구조', '근본적', '변화', '개혁', '우리', '사회', '만연한', '반칙', '특권', '청산', '불평등', '양극화', '극복', '노력'] 아래와 같은 코드를 이용하여 coun..

학습용 데이터의 평균에 따른 cost function의 모양

1. 데이터의 평균이 0에 가까울때 데이터의 평균이 0에 가까울 수록 cost function의 모양이 둥근 밥그릇 모양이 된다. 2. 데이터의 평균이 0에 가깝지 않을때 데이터의 평균 값이 커질 수록 cost function이 좀 더 뾰족한 모양이 된다. 따라서 학습도 ⍬_1에 대해서만 많이 수행된다 (⍬_1을 미분한 값에 x가 포함되어 있기 때문) => 따라서 데이터를 항상 정규화(평균=0, 표준편차=1) 해준 후 학습을 진행한다. * 출처 : 수학적으로 접근하는 딥러닝 올인원 패키지 Online.

선택한 데이터의 유형에 따른 cost function의 모양

1. loss function loss function은 데이터 하나에 대한 오차를 구하는 것이기 때문에, 이를 그래프로 나타내면 아래와 같이 여러 값(선)들이 모여있는 형태가 된다. 2. cost function 반면 cost function은 데이터들을 모두 모아 평균을 낸 값이므로 등고선의 형태(밥그릇형태)로 볼 수 있다. 3. loss function과 cost function의 관계 loss function 선이 고르게 분포할 수록 cost function은 둥근 모양으로 만들어 진다. * 출처 : 패스트캠퍼스 수학적으로 접근하는 딥러닝 올인원 패키지 Online.

loss function으로 본 데이터의 평균, 분산, 노이즈에 따른 학습의 차이

1. 분산에 따른 학습의 차이 데이터의 분산이 높을 때 보다 낮을 때 더 빠른 학습이 가능하다. 2. 평균에 따른 학습의 차이 평균이 커질수록 파라미터의 변화율이 크다. ⍬_1의 미분값에 x가 포함되어있고, x의 절댓값이 1이상일때 학습률이 높아지기 때문. 3. 노이즈에 따른 학습의 차이 노이즈가 있을땐 데이터들의 계곡이 한 점에서 교차하지 않는다. 따라서 학습은 아래와 같이 이루어 진다 * 출처 :수학적으로 접근하는 딥러닝 올인원 패키지 Online.

Single Variable Linear Regression에서 파라미터의 개선

bias가 있는 linear regression을 수행할 때 loss function은 다음과 같다. 또한 loss function을 각각의 파라미터로 미분하면 다음과 같다 이때 ⍬_1의 미분값에는 x가 곱해져 있기 때문에 x의 값에 따라 ⍬_1과 ⍬_2의개선 속도가 다르다. x의 절댓값이 1보다 크면 ⍬_1이 ⍬_0보다 더 빠르게 개선되고, x의 절댓값이 1보다 작으면 ⍬_0이 ⍬_1보다 더 빠르게 개선된다. 사진에서 볼 수 있듯 x의 절댓값이 1보다 작은 보라색 부분은 ⍬_1(가로축)보다 ⍬_0(세로축)의 변화율이 더 크고, x의 절댓값이 1보다 큰 빨간색 부분은 ⍬_1(가로축)보다 ⍬_0(세로축)의 변화율이 더 작다 * 출처 : 패스트캠퍼스 - 수학적으로 접근하는 딥러닝 올인원

[백준]2211 네트워크복구 #다익스트라#mst

1. 풀이 아래와 같은 2번조건이 네트워크를 복구해서 통신이 가능하도록 만드는 것도 중요하지만, 해커에게 공격을 받았을 때 보안 패킷을 전송하는 데 걸리는 시간도 중요한 문제가 된다. 따라서 슈퍼컴퓨터가 다른 컴퓨터들과 통신하는데 걸리는 최소 시간이, 원래의 네트워크에서 통신하는데 걸리는 최소 시간보다 커져서는 안 된다. 위와같이 충족되어야 하기 때문에, 다익스트라를 이용하여 그래프를 만들어 나간다. 다익스트라에서 노드들의 거리를 업데이트 할 때, 특정노드의 이전노드도 같이 업데이트 해주며 edge들을 파악해 준다. 다익스트라를 이용해서 mst를 만드는건 어렵지 않은데, 위의 알고리즘을 적용하기 위해선, "다익스트라를 이용해 이은 간선들이 항상 MST를 만든다" 라는 전제조건이 있어야 한다. (1) 이는..

알고리즘/graph 2020.08.09

batch size에 따른 loss의 변화율

1. 학습 과정상의 차이 batch size의 크기에 따라 학습되는 과정되는 모습이 달라질 수 있다. batch size가 작으면 순간 loss가 커지고 그에 따라서 파라미터가 급격히 변화하는 경향이 있다. 따라서 그래프가 비교적 크게 흔들린다. => 그 이유는 batch size가 크면 여러 데이터의 평균으로 loss가 구해지기 때문에 강건하게 변한다. 2. 학습속도상의 차이 batch size가 작을수록 파라미터를 개선하는 횟수(계산을 수행하는 횟수)가 크기 때문에 시간이 오래걸린다. 3. iterator는 batch size가 작을수록 크다.

[백준]7578 공장 #세그먼트트리

1. 풀이 A열에 있는 기계들을 왼쪽부터 차례대로 B와 매칭시킨다. 이때 매칭된 B의 오른쪽에 있는 기계중에 매칭된 기계의 수가 겹치는 선의 수가 된다. 그 이유는, A의 왼쪽기계부터 차례대로 매칭을 시키기 때문에, B의 왼쪽 기계는 매칭이 되었어도 선이 겹칠일이 없기 때문이다. 이를 그림으로 표현하면 아래와 같다. 따라서 예시를 순서대로 진행하면 아래와 같다. 따라서 답(겹치는 선의 수)은 3이다. 이때 수행해야 할 작업은 아래와 같이 두가지이고 각각을 다음과 같이 해결한다. (1) 현재 매칭중인 기계의 B에서의 위치 => dictionary 자료형 이용 (2) B의 오른쪽에서 이미 매칭이 된 기계의 개수 => 세그먼트트리(구간합) 이용 2. 소스코드 import math import sys N=int..

알고리즘/graph 2020.08.08

데이터 생성기

y=ax+b 로 선형회귀분석을 하기위해 데이터를 생성하는 클래스. (1) 소스코드 import numpy as np import matplotlib.pyplot as plt class dataset_generator: def __init__(self,feature_dim=1,n_sample=100,noise=0): self._feature_dim=feature_dim self._n_sample=n_sample self._noise=noise self._coefficient=None self._init_set_coefficient() # 초기 기울기값 설정, 마지막값은 bias (기울기는 1로 초기화, bias는 0으로 초기화) def _init_set_coefficient(self): self._coef..

batch size

딥러닝에서 데이터를 몇개 단위로 학습시킬것인지에 대한 하이퍼파라미터를 batch size라고 한다. 데이터의 개수가 x개 일때, batch size는 크게 3가지로 나뉜다 batch gradient descent mini-batch gradient descent stochastic gradient descent 설명 모든 데이터를 사용해서 그 평균값으로 한번만 웨이트를 개선 N개의 데이터씩 사용 1개의 데이터씩 사용 1epoch 당 iterate 횟수 1 X/N X 계산속도 빠름 > 느림 신뢰도 낮음