728x90

전체 글 114

[NLP] 언어 모델에 대한 평가 체계 (GLUE, KLUE)

언어 모델의 평가 모델을 설계할 때 가장 중요한 것 중 하나는 '모델을 어떻게 평가할 것인가'이다. 이에 맞게 테스트셋을 구축하고 테스트셋에 대한 평가 지표를 체계적으로 설계함으로써 원하는 태스크에 대한 모델의 성능을 적절하게 평가할 수 있다. 평가 방법이 비교적 명확하고 표준화 되어 있는 CV와는 달리 NLP의 경우에는 언어와 태스크에 따른 모델 평가 방법이 제대로 표준화되어 있지 않았다. 2019년 BERT 페이퍼가 발표되면서 GLUE benchmark가 등장하였고, 이는 현재 영어 관련 NLP 태스크 평가 방법의 표준이 되었다. GLUE 벤치마크 (General Language Understanding Evaluation) Quora Question Pairs (QQP, 문장 유사도 평가) Ques..

DeepLearning/NLP 2021.09.24

[DL] ResNet의 Inspiration

Why Residual Learning? 지금껏 ResNet을 읽으면서 가장 이해가 되지 않았던 점은 왜 ResNet은 deeper network를 만드는데에 residual learning의 개념을 적용한 것일까? 에 대한 것이었다. Not about the Vanishing Gradient 물론 skip connection을 통해 gradient vanishing 등의 문제를 해결한다 이런 측면도 있겠지만, 논문에서 밝히길 여러 normalized initialization과 intermediate normalization layer로 인해서 해결 가능하다. 즉, 단순히 gradient vanishing 문제 등을 해결하기 위해 skip connection을 통한 residual learning이라는..

DeepLearning/Basic 2021.09.24

빅데이터 분석기사 100점 후기

일단 인증부터! 무기력했던 2021 상반기에 그냥 뭐라도 하자 싶어서 응시했던 빅데이터분석기사에서 100점을 맞았다. 원래는 마지막이 0점 처리 되어서 60점이었는데, 그래도 합격이니까 뭐 하고 넘어갔다가 지금 다시 확인해보니 점수가 정정되어있었다! 아무튼 시험에 대한 후기를 조금 말해보자면, 1) 쉽다. 특히 이쪽 분야에 대해 공부를 한 사람이라면 정말 쉽다. 2) 필기는 생각보다 까다롭다고 느꼈고, 필기는 모델 성능을 중시하는 게 아니라 신경 쓸 게 많이 없었다. 3) 단답형 같은 경우엔 그냥 필기와 비슷했음. 4) 작업형 2유형은 모델을 돌려서 성능 평가까지 해보는 파이프라인 코드 작성 문제였는데, 생각보다 UI가 많이 구려서 평소에 코랩에 익숙했던 나는 많이 애먹었다. 그리고 시험장 키보드 너무 ..

Daily 2021.09.07

신경망의 loss는 y의 distribution을 고려하는가? 고려한다면 왜?

궁금한 거 정리 1) p(y|X) or E(y|X)를 추정하는 건데 우리는 왜 y의 분포를 고려하는가? 분명 그 둘은 다르지 않나? 어느 정도 y|X가 y의 분포와 유사할 것이다 라는 것을 가정을 해주는 건가? 만약에 딥러닝에서는 이런 걸 고려해주지 않는다면 tree 모델에서는 1)이 해당이 되는건가? tree 모델에서는 ㅇㅇ을 추정한다고 하는 이런 모형화 되는 게 아예 없는건가? (parameterize 되고 아니고가 non-parametric을 결정하는 건 아닐텐데?) 2) tweedie distribution을 따르는 걸 고려해서 lgbm, xgb를 학습시켰을 때 잘 나왔음. -> loss function을 분포에 맞게 수정해주는 건데 이걸 non-parametric이라고 할 수 있나? → 분포에 ..

Daily 2021.08.26

[Pytorch] nn.Module & super().__init__()

우리는 pytorch에서 각자 레이어 혹은 모델을 구성할 때, nn.Module을 상속받는다. 왜 상속을 받을까? 또 상속받을 때, super().__init__()은 왜 해주는 것일까? 해당 코드를 작성함으로써 어떤 속성을 갖게되는 걸까? 이번 글에서는 이 두 가지를 중점적으로 정리해볼 것이다. 아래의 코드는 간단히 convolution block을 구현한 것이다. import torch import torch.nn as nn class ConvBlock(nn.Module): """ conv2d - batchnorm - relu - max_pooling2d 로 구성된 conv block을 만들어봄 """ def __init__(self, kernel_size, stride, padding, pool, ..

[python] getter, setter, property, decorator 정리

_로 시작하는 변수 (getter, setter) (참고: https://www.daleseo.com/python-property/) : 외부에서 직접 접근이 어려운 변수 (클래스 인스턴스의 내부 데이터를 보호하기 위함) class Person: def __init__(self, first_name, last_name, age): self.first_name = first_name self.last_name = last_name self.set_age(age) def get_age(self): ## getter return self._age # 외부에서 직접 접근을 하지 못하고, getter를 통해서만 가능 def set_age(self, age): ## setter if age < 0: raise Va..

[ML/DL] 최적화(Optimization), 경사하강법 (Gradient Descent Methods) (2)

수식이 포함되어 있는 글입니다. 원활한 이해를 위해 데스크탑 모드로 전환하실 것을 권합니다. Gradient Descent First-order iterative optimization algorithm for finding a local minimum of a differentiable function cf.) first-order optimization first-order optimization 같은 경우에는 최소 한 번 미분한 값을 활용하여 optimization을 하는 경우를 의미하고, second-order optimization과 같은 경우에는 두 번 미분한 값 (or gradient)를 활용하여 최적화를 하는 경우를 의미함. 일반적으로, nth optimization 같은 경우에는 rank..

DeepLearning/Basic 2021.08.21

[백준] 문제 입력 형식 정리 (python)

백준이 프로그래머스나 리트코드에 비해 짜증나는 부분은 인풋이 들어가는 형태도 고려해줘야 한다는 점이다. 오랜만에 백준으로 문제를 풀려니까 입력을 어떻게 할지부터가 난관이어서 입력 형식을 정리해보고자 한다. (언어는 파이썬) 백준 예제 입력은 위와 같이 들어올 때가 종종(아니 대부분) 있다. 그럼 \n으로 split을 하면 되지 않나? 하는데 왜인지 모르게 계속 오류가 났다. 공백 기준으로 해도 똑같은 에러가 계속 발생한다. (나 이전까지는 어떻게 해온 거지..머리에 든 게 없는 것을 겸허히 받아들이고 정리하기로 했다..) 위의 에러가 발생하는 이유는 애초에 input이라는 함수 자체가 \n이 들어오면 아예 입력을 마치는 것처럼 동작하기 때문이다. 따라서 여러 개의 입력값을 받기 위해서는 반복문을 활용해야..

올리브영 no.1 tech 코딩테스트 후기

경력직 대상 코테였지만 그냥 연습 삼아 보았습니다. 코딩테스트를 보면서 매일 생각하는 건 이 문제는 이런 키워드로 풀면 될 거 같은데 문제의 구조화가 안된다는 생각을 항상 합니다. 아이디어 키워드만 떠오르고 구체적인 구현 방안이 떠오르지 않는? 이번에도 마찬가지였던 것 같고 1번은 그럭저럭 풀만했지만 2번은 재귀를 써서 구현하면 될 것 같은데 어떤 식으로 해야할지가 조금 깜깜하더라구요. 일단은 bfs, dfs 구현을 좀 더 해보고 재귀함수에 익숙해져야겠다는 다짐을 한 계기가 되었다고 정리할 수 있을 듯합니다. 2차 코테도 있는 듯한데 2차는 참여를 못할 것 같네요! 어쨌든 연습 삼아 짱돌 굴려본 좋은 경험이었다고 생각합니다.

Daily 2021.08.15

면접을 복기하며!

받았던 면접 질문들 - batch norm - 차원의 저주 - overfitting이 있음에도 왜 deep learning을 사용하는가 - 개발자로서의 본인의 포부 - 팀 프로젝트 할 때 팀 빌딩을 어떻게 했는지? 그 이유는? - 팀 간 소통은 어떻게 진행을 했는지? - 프로젝트 진행 시에 왜 해당 모형을 사용했는지 그 근거 (이게 제일 중요했음. 특히 데이터 분석의 경우) - xgboost와 lgbm의 차이 (당시에 제대로 대답 못했다..) - b2b 데이터와 b2c 데이터는 어떻게 다른지 - (네이버 파이낸셜 AML 인턴) 본인이 생각하는 이상거래의 패턴은? - 데이터 분석을 진행하는 목적 (2020 빅콘 챌린지의 경우, 단순히 수요예측이 문제라기보다는 이를 어떻게 활용할 건지가 중요했다. 이걸 통해..

Daily 2021.07.12
728x90