[프로그래머스] / [Level 2] / [Python 오픈채팅방
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import defaultdict def solution(record): answer = [] new = [] id_nic = defaultdict(str) for rec in record: j = rec.split(' ') if j[0] == 'Enter': id_nic[j[1]] = j[2] answer.append(f'{j[1]} 님이 들어왔습니다.') elif..
1 x 1 Convolution ?
·
ML & DL/Deep Learning
1 x 1 Convolution AlexNet과 VGGNet의 큰 파라미터를 줄이기 위해 GoogLeNet에서는 1x1 Convolution을 사용했습니다. 1x1 Convolution은 이후 다양한 모델에서 연산량을 줄이기 위해 사용되어 이 방법이 매우 효과적임을 증명합니다. 입력 데이터의 채널(Channel) 수 조절 위 그림과 같은 (64 * 64 * 192) 블럭에 (1 * 1 * 192) 블럭을 Convolution 하게 되면 (64 * 64)개의 픽셀(원소) 각각의 192개의 채널(숫자)와 필터(1*1)의 192개의 채널(숫자) 사이에서 요소간 곱셈을 하게 됩니다. 정리하자면, 필요한 필터는 (1 * 1 * #channel * #filter)가 되며, #channel은 입력 블럭의 channe..
Regularization: Overfitting을 해결하는 방법들
·
ML & DL/기초 이론
앞의 포스트에서 Overfitting과 Underfitting에 대해 설명하였습니다. 여기서 Overfitting이 발생하지 않도록 미리 예방하는 기법들이 다양하게 있는데 차례대로 설명하겠습니다. Regularization(정규화)을 설명하기 앞서, Normalization도 정규화라고 불리기 때문에 개념을 정확히 구분해야 합니다. Normalization은 데이터의 값을 조정하는 작업이며, Regularization은 모델의 복잡도를 조정하는 작업입니다. Regularization Regularization(정규화)은 모델에 제약(penalty)를 주어 복잡도를 줄이는 방법입니다. 모델의 복잡도는 모델이 가지는 파라미터의 수에 비례하며, Regularization은 이 파라미터의 값이 커지는 것을 제한..
Overfitting & Underfitting
·
ML & DL/기초 이론
Overfitting & Underfitting 우리가 모델을 학습할 때, 파라미터(parameter)를 수정(update)하여 학습 데이터에 맞는 모델을 만드는 것이 목표입니다. 즉 일반화(Generalization) 성능을 높이는 것을 목표로 합니다. 위 그림과 같이 Train Loss는 낮지만 Valid Loss는 커지고 있습니다. 이런 상황을 일반화 성능이 안좋다고 말하며, 당연히 Train Loss 자체가 낮아도 이 일반화 성능이 안좋다고 말합니다. 위 그림처럼 너무 많이 학습 데이터에만 집중하다 보면 훈련 데이터에는 잘 맞지만 새로운 데이터에는 맞지 않은 과적합(Overfitting)이 일어날 수 있습니다. 반대로, 모델이 너무 단순하거나 학습 데이터가 너무 작다면 학습 데이터를 제대로 설명하..
Gradient Descent & Optimizer(SGD, Momentum, Adagrad, RMSprop, Adam)
·
ML & DL/기초 이론
Gradient Descent 경사 하강법(Gradient Descent)은 함수의 기울기(Gradient)를 이용하여 비용 함수(Cost Function)의 최소값을 찾는 최적화(Optimize) 알고리즘입니다. 먼저, 함수의 최소값을 찾기 위해서는 미분을 통해 함수의 기울기를 구해야 합니다. 경사 하강법은 초기에 임의의 가중치(Weight)를 가지고 시작합니다. 이후 각 가중치에 대한 함수의 기울기(Gradient)를 계산하여 기울기가 작아지는 방향으로 가중치를 업데이트 합니다. 여기서 기울기가 작아지는 방향이란 함수의 기울기가 0인 지점(최소값)으로 가능 방향입니다. 이를 식으로 나타내면 다음과 같습니다. $$ w = w - \eta \frac{\partial loss}{\partial w} $$ ..
Neural Network & Linear Neural Networks & Multi Layer Perceptron
·
ML & DL/기초 이론
Artificial Neural Network 인공 신경망(Artificial Neural Network)는 생물학적 뇌의 동작 원리에서 영감을 받아 만들어진 기계학습 모델 중 하나입니다. 인공 신경망은 여러 개의 뉴런(Neuron)으로 구성되어 있으며, 입력값을 받아서 가중치(Weight)와 편향(Bias)을 곱한 값에 활성화 함수(Activation Function)를 적용하여 출력값을 내보내는 과정을 반복하여 학습합니다. 이렇게 여러 개의 뉴런들이 연결되어 있으며, 입력값이 들어왔을 때 연결된 뉴런들을 통과하며 결과를 출력하는 형태를 층(Layer)이라고 합니다. 일반적으로 인공 신경망은 입력층(Input layer), 은닉층(Hidden layer), 출력층(Output layer)로 구성되어 있..
[프로그래머스] / [Level 2] / [Python] 예상 대진표
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n,a,b): answer = 1 for _ in range(n//2): answer += 1 if (abs(a-b) == 1) and (a//2 != b//2): break if a % 2 != 0 or a == 1: if (abs(a-b) == 1) and (a//2 != b//2): break a = (a + 1) if b % 2 != 0 or b == 1: if (a..
[프로그래머스] / [Level 2] / [Python] k진수에서 소수 개수 구하기
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import math def is_prime(n): for i in range(2, int(math.sqrt(n)+1)): if n % i == 0: return False return True def solution(n, k): answer = 0 # 진수 변환 k_ = '' while n != 0: n, m = divmod(n, k) k_ += str(m) k = k_[::-1] s = k.s..
욱근욱
'분류 전체보기' 카테고리의 글 목록 (30 Page)