JasonScript

Jason's Research Blog

전체 글 36

< 알고리즘 문제 풀이 > 테이블 해시 함수

문제 링크 > 코딩테스트 연습 - 테이블 해시 함수 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def solution(data, col, row_begin, row_end): answer = 0 data = sorted(data, key = lambda x: [x[col - 1], -x[0]]) for i in range(row_begin, row_end + 1): total = 0 for j in data[i - 1]: total += j % i answer ^= total retu..

< 알고리즘 문제 풀이 > 유사 칸토어 비트열

문제 링크 > 코딩테스트 연습 - 유사 칸토어 비트열 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 솔루션 > def solution(n, l, r): answer = f(n, r) - f(n, l - 1) return answer def f(n, pos): if n == 1: return '11011'[:pos].count('1') quotient, remainder = divmod(pos, 5 ** (n - 1)) cnt = 0 if quotient 2: cnt = 4 ** (n - 1) * (..

< Boostcamp > Recurrent Neural Network

RNN Sequential Model 시퀀스 데이터(sequence data)를 처리할 때 가장 큰 어려움은 데이터의 길이가 미리 정해져 있지 않다는 점입니다. 이는 데이터의 차원을 사전에 알 수 없다는 것을 의미하며, 이러한 특성 때문에 전통적인 완전 연결 계층(fully connected layers)이나 합성곱 신경망(CNN)과 같은 방법을 직접적으로 적용하는 데 한계가 있습니다. 시퀀스 데이터의 가변적인 특성을 다루기 위해, 우리는 입력 데이터의 정보량을 제한하는 방법을 사용합니다. 이를 수학적으로 표현하면, 특정 시점 $\tau$ 이전까지의 정보만을 입력으로 사용하는 것입니다. 이러한 접근 방식은 $AR(\tau)$로 표현됩니다. $\tau = 1$로 설정하는 모델을 마르코프 모델(Markov ..

< Boostcamp > Convolutional Neural Network

Convolution은 무엇인가? Convolution 일반적인 합성곱 신경망(CNN)은 Convolution Layer, Pooling Layer, Fully Connected Layer로 구성되며 각각의 역할이 있습니다. Convolution Layer: Convolution Layer에서 채널의 개수는 필터의 개수에 따라 달라지며, 입력 채널 수와 출력 채널 수를 통해 필터의 채널 수를 결정할 수 있습니다. 파라미터의 개수는 커널 크기 * 입력 채널 수 * 출력 채널 수입니다. Pooling Layer: Pooling Layer는 이미지에서 유용한 정보를 추출하는 역할을 합니다. 보통 최대 풀링(Max Pooling) 또는 평균 풀링(Average Pooling)이 사용되며, 입력 데이터를 각 채널..

< Boostcamp > Optimization

Optimization Optimization의 주요 개념 Generalization 학습시 train error는 꾸준히 감소하지만 test error는 그렇지 않을 수 있습니다. 이 경우 Generalization performance는 Test Error와 Training Error의 차이를 말입니다. Generalization이 좋다는 것은 네트워크의 성능이 학습데이터와 비슷하게 나올 것이라는 보장입니다. Overfitting & Underfitting Overfitting은 학습데이터에서 잘 동작하지만 test 데이터에서 잘 동작하지 않는 것을 말하며 Underfitting은 네트워크가 너무 간단하거나 학습을 조금 시켜 학습데이터도 잘 맞추지 못하는 것입니다. 사실상 학습데이터가 학습하고자 하는..

< Boostcamp > Numpy / Pandas

Numpy 다양한 수학 연산들을 리스트로 계산하게 되면 메모리 효율적이지 않고 파이썬은 인터프리터 언어이기 때문에 처리속도에 문제가 있습니다. 이러한 문제로 적절한 패키지의 활용이 필요한데 여기서 numpy가 쓰입니다. numpy는 array연산의 사실상의 표준으로 리스트에 비해 빠르고 메모리 효율적입니다. 또한 반복문 없이 데이터 배열에 대한 처리를 지원합니다. 일반적으로 속도는 for loop < list comprehension < numpy이며 100,000,000 번의 loop를 돌 때, 약 4배 이상의 성능 차이를 보입니다. C로 구현되어 있어 파이썬의 가장 큰 특징인 dynamic typing을 포기한 대신 성능을 확보했습니다. 단, Concatenate처럼 계산이 아닌 할당에서는 연산 속도..

< Boostcamp > Python 3

File / Exception / Log Handling Exception 예측 가능한 예외 개발 과정 중에 미리 파악할 수 있는 상황들로, 개발자가 코드 내에서 직접 정의하는 예외입니다. 이러한 예외는 예상되는 문제점이나 특정 조건들에 대응하기 위해 사전에 명시적으로 설정됩니다. 예상 불가능한 예외 주로 개발자의 실수에서 비롯되며, 이들은 프로그램 실행 과정에서 인터프리터에 의해 감지됩니다. 이 경우, 인터프리터는 에러를 발생시키고 프로그램을 종료시키지만, 이러한 예외들은 Exception Handling을 통해 적절히 관리할 수 있습니다. 예외 처리 구문 (try-except) try: 예외 발생 가능한 코드 except : 예외 발생했을 때 대응하는 코드 Built-in Exception (기본적으..

< Boostcamp > 딥러닝 기초

CNN 첫걸음 Convolution 연산 이해하기 Convolution 연산은 다층 신경망(MLP)과 다르게 동작합니다. MLP에서는 각 뉴런이 선형모델과 활성함수에 의해 완전히 연결되어 있으며, 각 성분 $h_i$에 대응하는 가중치 행 $W_i$가 필요합니다. Convolution 연산의 특징 공통 커널 사용: Convolution 연산에서는 모든 $i$에 대해 동일한 커널 $V$가 사용됩니다. 국소적 적용: 커널은 입력벡터 $x$ 상에서 이동하며 적용됩니다. 신호 처리: Convolution 연산은 신호를 커널을 통해 국소적으로 증폭 또는 감소시켜 정보를 추출하는 과정입니다. Cross-correlation: CNN에서 사용되는 연산은 엄밀히 말해 cross-correlation입니다. 다양한 차원에..

< Boostcamp > AI Math 3

통계학 맛보기 통계적 모델링 통계적 모델링의 목표는 적절한 가정을 통해 확률분포를 추정하는 것입니다. 이는 기계학습과 통계학의 공통된 목표로, 모집단의 분포를 근사적으로 추정하는 것에 중점을 둡니다. 모수적 (parametric) 방법론: 특정 확률분포를 가정하고, 해당 분포의 모수를 추정하는 방법. 비모수 (nonparamtric) 방법론: 특정 확률분포를 가정하지 않고 데이터에 따라 모델이 유연하게 변화하는 방법. 모수 추정 확률분포를 가정한 후에는 관련 모수를 추정할 수 있습니다. 정규분포의 모수: 평균 $\mu$와 분산 $\sigma^2$. 표본통계량: 표본평균과 표본분산($N-1$으로 나누는 이유는 불편 추정량을 구하기 위해서입니다). 표집분포: 표본평균의 분포는 큰 표본 수에서 정규분포 $N(..