오늘은 간단하게 CNN (Convolutional Neural Network)에 대해서 리뷰하고자 한다. CNN은 이미지 처리와 패턴 인식에 우수한 성능을 보여주는 신경망이다. 이미지는 픽셀로 이루어진 격자 형태의 데이터이다. 이미지는 픽셀로 이루어져 있고 각각의 픽셀은 RGB(Red, Green, Blue)값을 가진 데이터이다. CNN은 이러한 이미지 데이터의 공간적인 특징을 추출하여 학습하고 이를 기반으로 패턴을 인식하는 데 사용된다. 이를 위해 CNN은 주로 합성곱 층(Convolutional layer), 풀링 층(Pooling layer), 밀집층(Fully-connected layer, Dense layer)으로 구성이 된다. 합성곱 층(Convolutional Layer) 합성곱 층(Conv..
오늘은 기계 학습 모델에서 하이퍼파라미터를 조정할 수 있는 오픈 소스 라이브러리인 Optuna를 소개하고자 한다. 이전에 사용했던 GridSearchCV 패키지는 시간이 너무 오래걸리고 하이퍼파라미터 값을 직접 지정해야한다는 단점이 존재한다. Optuna도 파라미터 값을 지정해주어야 하는 것은 맞지만, 조금 더 포괄적인 값을 입력하면 범위 내에서 자동탐색을 통해 최적의 하이퍼파라미터를 도출해준다는 점에서 큰 장점을 가진다. 최적화 메커니즘 Optuna의 핵심 기능은 '효율적인 하이퍼파라미터 최적화'에 있다. 최적화 과정은 크게 2가지 메커니즘으로 이루어진다.트리 기반의 구조화된 파라미터 최적화 (TPE)프루닝 메커니즘 트리 기반의 구조화된 파라미터 최적화(TPE)는 베이지안 최적화의 일종으로, 이전의..
CTE CTE는 쿼리를 통해 만들어낸 임시 Table이다. CTE의 기본 문법은 아래와 같다.WITH 테이블 이름 AS (테이블 만들 쿼리문) CTE의 경우 WITH와 함께 사용된다. 임시 테이블을 가지고 우리가 원하는 결과를 얻기 위한 쿼리문을 가지고 작성하기 때문이다. 예를 들어. 아래와 같은 세개의 Table이 존재한다고 하자.첫번째 Table: freelancerid : 프리랜서의 아이디first_name : 프리랜서의 이름last_name : 프리랜서의 성country : 프리랜서의 근무지pay_rate : 시급job_type_id : 직종 아이디 (job_position 테이블의 foreign key)두번째 Table: hours_workedid : hours_worked 테이블 내 데이터의..
오늘은 중요하게 다루고 넘어갈, Precision과 Recall의 Trade-off 관계에 대해 짚고 넘어가고자 한다. 우선 포스팅에 앞서, Precision값과 Recall에 대해 간단히 짚고 넘어간다. Confusion Matrix 우리는 Precision과 Recall의 정의는 Confusion Matrix에서부터 시작한다. 분류 모델에 대한 성능을 평가할 때는 모델이 내놓은 답(Predicted), 실제 정답(Actual) 간의 관계로 정의하여 2 x 2 Matrix로 정의할 수 있다. Confusion Matrix의 각각의 요소에 대한 설명은 아래와 같다.True Positive(TP) : 실제 True인 정답을 True라고 예측 (정답)False Positive(FP) : 실제 False인 정..
오늘은 추천 시스템의 Matrix Factorization(MF)을 리뷰해보고자 한다. 리뷰에 앞서 협업 필터링의 두 가지 방식에 대해 짚고 넘어가자. 협업 필터링의 두 가지 방식 Memory-based Approach Memory-based Approach는 추천할 때마다 Raw 데이터를 활용하고 계산해서 이를 추천에 사용하는 방식이다. 기본적인 협업필터링 알고리즘은 모두 메모리 기반 알고리즘이라고 보면 되고, 이는 계산량이 많기 때문에 현실에서 빅데이터를 사용한 모델에는 적합한 방법은 아니다. Model-based Approach 우리가 오늘 살펴보고자 하는 Model-based Approach는 Raw 데이터로 미리 학습한 모델을 만들어두고, 추천 시에 학습한 모델을 사용하여 예측하는 방식이다. M..
오늘은 딥러닝에서 이슈가 되는 skip connection과 vanishing gradient 문제를 해결하는 ResNet에 대해 알아보고자 한다. 딥러닝 모델의 기초는 신경망이다. 신경망은 뉴런으로 구성이 되어 있고 각 뉴런은 입력값을 받아 가중치($W$)와 편향($b$)을 적용하여 활성화 함수를 통해 출력을 계산한다. 이런 뉴런들이 여러 층으로 구성되면 MLP(다층 퍼셉트론)라고 불리게 된다. 이러한 다층 퍼셉트론이 발전하여 다층 신경망이 된다. 일반적인 관점에서 더 깊은 다층 신경망이 될수록 복잡한 과제를 수행할 수 있다. 딥러닝이 발전하면서 이상한 현상을 발견하게 되는데, 더 깊은 네트워크가 오히려 성능이 저하된 현상을 발견하게 된다.모델 성능의 감소 요인에는 여러 복합적인 요인들이 있겠지만, 모..