공부리뷰12 ADNI PET Pre-processing # 세줄요약 # ADNI PET 전처리의 목적은, (1) 가능한 많은 수의 PET 영상들을 균질(Uniform)하게 만들고, (2) 서로 다른 시스템에서 얻게된 PET 영상들을 유사하게 보이도록 하는 것이다. 핵심 영상 처리는 Co-registration으로 6개 또는 4개로 이루어진 5-min(5분) frames image set에서 첫번째 frame을 기준으로 공간 정렬을 해주는 것이다(촬영시 환자의 움직으로 인한 공간오차를 최소화). 그 외에 Baseline을 기준으로 Coregistration을 하여 공간정규화(Standardization)을 해주고, Smoothing을 통해 등방(Isotropic)한 해상도까지 맞춰주면 (1) Co-reg, (2) Averaged, (3) Std img & vo.. 2020. 7. 27. 머신러닝의 데이터셋 종류와 모델 평가 # 세줄요약 # 머신러닝(딥러닝)에 사용되는 데이터들은 훈련(Train), 검증(Validation), 테스트(Test)의 3가지 데이터셋으로 나뉘어 인공지능 학습 및 평가에 사용한다. Train dataset은 인공지능 모델을 학습하는 데 사용되며, Validation dataset은 학습된 모델의 성능을 검증하여 하이퍼 파라미터(Hyper parameter)를 조정하는 지표로 활용되며, Test dataset은 파라미터 조정까지 진행하여 최종적으로 학습이 완료된 모델의 성능을 평가하는데 사용된다. 인공지능을 학습하는 동안 Train dataset으로 학습시키고 Validation dataset으로 학습성능을 검증하는데, 이 두 데이터셋을 어떻게 나누는지에 따른 모델 평가 방법으로 Hold out va.. 2020. 7. 24. 인공지능과 머신러닝, 딥러닝의 관계 # 세줄요약 # 인공지능: 보통의 사람이 수행하는 지능적인 작업을 자동화하기 위한 연구 활동 머신러닝: 입력 데이터와 기댓값(해답 데이터)을 받아서 기대 출력에 가깝게 만드는 유용한 표현(representation)을 학습하는 것을 의미하며 인공지능을 만드는 방법 중 하나 딥러닝: 신경망(Neural Network)이라는 연속된 층에서 데이터로부터 점진적으로 의미있는 표현을 학습하는 새로운 머신러닝 기법 중 하나 # 상세 리뷰 # 인공지능과 머신러닝, 딥러닝의 관계는 정리하면 아래의 그림 1과 같다. 즉 인공지능이랑 말 그대로 인공적인 지능을 연구하는 학문분야를 의미하고, 머신러닝은 데이터를 주었을 때 데이터 속에 담긴 표현(representation), 법칙(relation) 등을 스스로 학습하여 문제.. 2020. 7. 24. 케라스 창시자에게 배우는 딥러닝 - 개요 저자: 프랑소와 숄레 역자: 박해선 출판: 길벗 발행: 2018년 10월 22일(초판) / 2019년 3월 20일(초판 4쇄) # 세줄요약 # 딥러닝 주요 프레임워크 중에 하나인 케라스(Keras)의 사용법과 딥러닝의 이론에 대해 입문자에게 쉽고 친숙하게 잘 설명한 책. '창시자의 철학까지 담았다!'라고 소개하고 있는데, 실제로 케라스의 창시자인 프랑소와 숄레가 저술한 책이며 철학까지 담았다고 표현한만큼 단순히 딥러닝의 이론과 케라스의 사용법만 설명하지 않고 딥러닝에 대한 고찰과 앞으로의 전망 등 창시자의 딥러닝과 케라스에 대한 철학들이 교재 중간중간 담겨 있다. 딥러닝 주요 프레임위크 중 가장 쉽다고 할 수 있는 케라스를 가지고 상세한 사용법을 소개하고 앞서 언급했듯이 이후 딥러닝에 대한 고찰과 방향에.. 2019. 12. 4. 파이토치 첫걸음 - 5. 합성곱 신경망 # 세줄요약 # 합성곱 신경망(Convolutional Neural Network): 하나의 필터가 이미지를 훑으며 필터와 일치하는 특성을 추출하는 것을 합성곱 연산이라 하며, 연산이 끝나면 이미지에 대한 특성지도(feature map)가 나오고 이러한 특성들이 중첩되면 더 복잡하고 다양한 형태를 구분할 수 있다. 합성곱 연산을 수행할 때 입력값의 크기를 유지하며 충분한 특성을 뽑기위해 패팅(padding)을 쓰고, 해상도가 충분할 때 이미지 메모리를 줄이고 넓은 시야에서 필터를 적용하기 위해 풀링(pooling)이라는 기법을 사용한다. 따라서 합성곱 연산이 합성곱 레이어(Convolutional Layer)를 지나며 이루어지면 이미지의 가로, 세로는 줄어들고 채널의 수는 늘어나게 되며, 모든 레이어를 .. 2019. 11. 18. 파이토치 첫걸음 - 4. 인공 신경망 # 세줄요약 # 인공뉴런(Perceptron)은 들어온 입력값에 가중치(Weight)를 곱하고 편차(Bias)를 더해준 뒤 모두 다 더한 값을 활성화함수(Activation function)를 통해 변형하여 전달하는 단위를 의미하고, 이러한 뉴런들이 모인 네트워크를 인공신경망(Artificial Neural Network; ANN)이라 부른다(hidden layer가 2개 이상이면, Deep Neural Network; DNN). 인공신경망(ANN)에 들어온 입력값이 여러개의 은닉층(hidden layer)을 거치며 최종결과값인 예측값 y*를 구하는 과정을 순전파(forward propagation)라 한다(y* = w3 × σ(w2 × σ(w1 × χ + b1) + b2) + b3 ; w = weigh.. 2019. 11. 18. 파이토치 첫걸음 - 3. 선형회귀분석 # 세줄요약 # 선형회귀분석은 주어진 데이터의 경향성을 잘 나타내는 선형관계를 찾아내는 것을 의미하는데, 간단한 예로는 y=wx+b 방정식에서 데이터 x, y를 가장 잘 표현하는 변수 w, b를 찾는 것이다(w: weight, b: bias). 예측값과 목표값의 차이인 오차를 나타내는 손실함수(Loss function)를 구하고, 경사하강법(gradient descent)을 사용하여 가중치(weight)를 업데이트하며 오차의 최솟값을 찾는 과정이 바로 학습(Learning)이다. 파이토치에서는 데이터 기본 단위로 "tensor"를 사용하여, "torch.nn" 라이브러리에서 신경망 모델과 손실함수를 설계하고, "torch.optim" 라이브러리에서 경사하강법 알고리즘을 선택해 학습을 수행한다. #code.. 2019. 11. 14. 뇌를 자극하는 파이썬3 - 11. 파일에 데이터 읽고 쓰기 # 세줄요약 # 1. 애플리케이션은 파일을 읽고 쓰기 위해 운영체제에게 API 함수로 파일처리를 요청하고 그 결과를 반환받는다. 2. 일반적으로 파일을 읽고 쓰는 과정은 열[open()] -> 쓰기[.write()]/읽기[.read()] -> 닫기[close()]로 구성되는데 자원 누수를 막기 위해 마지막에 파일 '닫기'를 잊지말고 해줘야 한다("with~ as~" 문을 사용하면 close() 함수를 사용하지 않아도 자동으로 파일이 항상 닫힘). 3. 문자집합은 기호로 문자를 컴퓨터에서 표현하기 위한 것으로 알파벳 문자집합인 ASCII를 시작으로 현재는 전세계 모든 언어의 문자집합인 Unicode가 제정되어 사용 중이다(이러한 문자집합을 부호화하는 것이 Encoding(인코딩)이다). #code bloc.. 2019. 11. 11. 뇌를 자극하는 파이썬3 - 10. 오류를 어떻게 다뤄야 할까 # 세줄요약 # 1. 파이썬에서 예외(Exception)는 문법적으로 문제가 없는 코드를 실행하는 중에 발생하는 오류를 의미한다(ex. Input 값이 잘못된 경우). 2. 예외처리는 "try~ except~" 구문을 이용하여, try 절 안에는 문제가 없는 정상적인 경우에 실행할 코드를, except 절에는 문제가 있을 경우 뒤처리하는 코드를 배치한다. 3. 파이썬에서 발생하는 대다수의 예외들은 "Exception" 클래스 안에 정의되어 있으므로 as문을 사용하여 Exception을 객체(Instance)로 받으면 거의 모든 예외처리가 가능하다(Exception 클래스 안에 없는 예외형식은 raise 문을 사용하여 매개변수로 넘기면 된다). #code block# my_list = [1, 2, 3] t.. 2019. 11. 11. 뇌를 자극하는 파이썬3 - 9. 클래스 # 세줄요약 # 1. 클래스(Class)는 속성(변수)과 기능(함수)이 합쳐진 객체(Instance)의 자료형으로, class를 이용하면 class 코드블록 내의 변수와 함수들은 객체 내부에서만 응집력을 발휘하고 객체 외부에는 영향을 주지 않는다. 2. 클래스를 정의할 때는 >>> class My_cls: 로 시작하고 __init__() 메소드로 변수를 초기화하여 모든 객체들이 변수를 공유하는 것을 막고 Self를 사용하여 객체에 소속된 변수와 함수를 정의한다. 3. 다른 클래스의 함수와 변수를 그대로 사용하려면 상속( >>> class A: // >>> class B(A): A -> B)을 이용하여 부모클래스의 변수, 함수를 받아올 수 있다. #code block# class Car: def __ini.. 2019. 11. 11. 이전 1 2 다음