소개
경력:
(현) ML Engineer @ MakinaRocks
(전) ML Engineer @ DearGen
(전) ML Engineer @ DeepBio
(전) Research Student @ UCL NLP Group, Streetbees
(전) Research Student @ ICL Photonics Lab
학력:
University College London (UCL): MSc in Machine Learning (머신러닝 석사) (학점: Distinction, GPA 4.0/4.0)
Imperial College London (ICL): BSc in Theoretical Physics (이론물리학 학사) (학점: First Class Honours, GPA 4.0/4.0)
소개:
5년차 Machine Learning Engineer입니다. (Google DeepMind가 출범하였고, Demis Hasabis가 박사과정을 한) University College London에서 머신러닝 석사를 전공하였습니다. 석사 때는 NLP에서 Knowledge Graph Embedding을 연구하였고, DeepBio에서는 Medical Diagnosis에 적용되는 Image Classification, Segmentation 딥러닝 모델들을 개발하였습니다. Deargen에서는 신약 개발의 Drug Target Interaction와 같은 문제 적용되는 GNN, RNN, Transformer 등등의 다양한 딥러닝 모델들을 적용한 경험이 있습니다. 현재 재직중인 MakinaRocks에서는 제조 현장의 로봇팔의 이상탐지에 적용되는 딥러닝 모델 및 머신러닝 시스템을 구축하고 있습니다.
강의
전체1수강평
게시글
질문&답변
2024.04.04
2-8 fully connected NN answer 코드 중 torch.nn.Linear 질문드립니다!
안녕하세요, 변정현입니다. 강의를 잘 수강하고 계시다니 저도 뿌듯하네요. 감사합니다. 좋은 질문들 주셔서 감사합니다. 아래 코드에서 torch.nn.Linear에 해당하는 부분이 강의서 말씀해주신 aggregation에 해당되는 부분일까요? torch.nn.Linear은 Weight Multiplication과 Aggregation 둘 다 포함합니다. 섹션 6의 첫번째 Ppt의 22번째 슬라이드 "Forward Pass as Matrix Multiplication"을 보시면 Weight Multiplication 및 Aggregation이 Matrix Multiplication으로 표현된다는 것을 확인할 수 있습니다. 그리고 섹션 2-8 실습편을 보시면 torch.nn.Linear은 사실상 Weight Matrix 곱하기 Input 더하기 Bias로 구성되는 것을 확인할 수 있습니다. (사진) 편의상 bias 벡터는 생략된걸까요..? 네 편의상 Bias을 생략한 것은 맞습니다. 하지만 한가지 참고사항으로 말씀드리자면, Input X에 차원수를 하나 추가해서 새로운 차원은 1의 값을 가진다고 가정해보겠습니다. 즉, X' = concat( [ X, 1 ] ) 이 되는 셈입니다. 그러면 W X + b 은 사실상 W' X'으로 표현할 수 있습니다. 여기서 W'은 W 행렬에 bias b을 마지막 row로 가지는 행렬입니다. 부연 설명드리자면 W이 M by N 행렬이면 W'은 (M+1) by N 행렬입니다. 1~M번째 row은 W 행렬과 동일하고 마지막 M+1번째 row은 bias vector B 값인 셈이죠. 즉, W' = concat( [ W, b ] ) 입니다. 이렇게 W'과 X'을 정의해서 W' X' 을 곱해보시면 WX + b의 결과와 동일하다는 것을 확인하실 수 있습니다. 따라서 편의상 bias b을 생략한 것은 맞지만 WX + b도 결국에는 WX 와 같은 꼴로 표현될 수 있다는 의미입니다 ㅎㅎ 그래서 딥러닝 논문들이나 교과서들을 보시면 Bias B 를 따로 구분하지 않는 경우가 많습니다. 감사합니다.
- 1
- 1
- 77
질문&답변
2024.03.28
ToTensor와 DataLoader관련질문드립니다!
안녕하세요~ 변정현입니다. 좋은 질문들 주셔서 감사합니다! ToTensor에서 왜 0~255를 0~1값으로 스케일링 하는 이유는 무엇인가요? 0~1의 범위로 스케일링하는 이유는 Activation Function (활성 함수) 의 Saturation 문제를 피하기 위해서입니다. (Section 7에서 배울 예정) Neural Network은 Sigmoid, Hyperbolic Tangent, ReLU와 같은 Non Linear Activation Function (비선형적인 활성화 함수)를 Layer들 중간 중간에 사용합니다. Sigmoid와 Hyperbolic tangent은 x >> 0, x 만약에 Sigmoid, Hyperbolic Tangent가 아니라 Saturation 문제로부터 자유로운 ReLU함수로 구성되어 있는 경우는 어떻게 될까요? (Section 12에서 배울 예정) Layer가 출력하는 값의 범위 (즉, 출력값의 표준편차) 를 "어느정도" 일정하게 유지시켜주어야 안정적으로 학습이 됩니다. 0~255 사이의 값이 Layer를 거칠수록 (즉, 여러번 곱하게 되면) 발산하게됩니다. 따라서 이때에도 0~1 사이의 값으로 스케일링 해주어야 NN이 안정적으로 학습될 수 있습니다. DataLoader 에서 데이터를 미니배치로 넘기면 가로,세로 길이가 32로 바뀌는 이유는 무엇인가요? Cifar10 데이터셋은 가로, 세로 길이가 원래 32입니다! squeeze 함수를 찾아보니 길이가 1인 차원이 없는 행 백터, 열백터, 스칼라 배열을 삭제한다고 하는데, 아래에서 사용되는 이유는 무엇인가요? 해당 예제에서 만들어보는 Neural Network은 Fully Connected Neural Network로 Vector 값을 입력받습니다. 여기서 Batch size에 대한 차원도 포함하면 해당 NN은 행렬 (Batch size, Hidden Feature Size) 을 입력받게 되는 셈입니다. 하지만 이미지 데이터는 기본적으로 다차원의 텐서입니다. 텐서의 크기는 (Batch size, Number of Channels, Height, Width)이기 때문에 (Number of Channels, Height, Width)에 해당되는 차원들을 하나의 Hidden Feature로 "squeeze"하여 (Batch size, Hidden Feature Size) 크기로 맞춰주는 것입니다.
- 1
- 1
- 92
질문&답변
2024.02.23
13 표준화에 관한 질문
안녕하세요! 좋은 질문들을 주셔서 감사합니다~ 첫번째 질문의 경우, 제가 Weight이 He initialize로 초기화되었다는 설명을 드리면서 혼선을 드린 것 같네요. 부연설명드리자면, Weight은 처음에 초기화될때 Normal Distribution으로부터 샘플링된 것으로, 샘플링 된 후에 (즉, 이후 학습의 과정)에서는 특정 값을 가지는 parameter입니다. 반면에 입력값은 학습 과정에서 계속 랜덤하게 샘플링되는 Random Variable이라고 볼 수 있습니다. 그리고 Gaussian 분포를 따르는 Random Variable에 사칙연산들을 적용했을때 Gaussian 분포가 출력되므로 WX+b의 분포도 Gaussian 분포를 따르게 됩니다. Non-linear한 transformation이 적용된 경우, 변환된 Gaussian 분포는 Gaussian이 아닐 수 있지만 변환이 충분히 smooth하고 입력 분포의 Variance가 작다면 변환된 분포는 대략적으로 Gaussian 분포를 따른다고 볼 수 있습니다. 따라서 각 Layer의 출력값 (즉, 다음 Layer의 입력값) 들은 대략적으로 Gaussian 분포라고 볼 수 있습니다. 두번째 질문의 경우도 마찬가지로, Gradient Descent을 수행한 후에는 Weight parameter 값은 변하고 이에 따라 WX + b 의 평균과 분산은 바뀌지만 출력되는 분포는 여전히 Gaussian입니다. 답변이 도움이 되었으면 좋겠네요 ㅎㅎ 감사합니다!
- 1
- 1
- 99
질문&답변
2024.02.21
Jupyter Notebook환경 관련 질문
안녕하세요! 실습자료들은 각 섹션에서 [실습] 이라고 표시된 강의들에 첨부자료로 업로드 되어있습니다! 실습 자료들이 모두 하나의 폴더로 구성되어 있지는 않지만, 각 실습을 진행하는데 있어서 필요한 코드들은 각 실습 강의의 첨부자료에 모두 포함되도록 구성되어 있습니다. 따라서 수강생분들이 일일이 폴더를 따로 구성할 필요는 없습니다. 문의 주셔서 감사합니다!
- 1
- 1
- 146
질문&답변
2024.02.16
6-5 수식에 관한 질문
안녕하세요! 제 풀이과정을 한번 참조해보시면 도움이 될 것 같습니다! y hat을 weight W에 대해서 미분할때 matrix가 아니라 3차원의 텐서가 되어서 풀이 과정에서 실수가 있어 보입니다. (사진) (사진) (사진) (사진)
- 1
- 1
- 105