Interview
-
Tensorflow와 Pytorch의 가장 큰 차이점은 계산 그래프 정의 방식입니다. Tensorflow는 계산 그래프를 먼저 정의하고 실행 시점에 데이터를 넣어주는 Define and Run 방식의 정적 그래프를 사용합니다. Pytorch는 실행 시점마다 새로운 계산 그래프를 정의하는 Define by Run 방식의 동적 그래프를 사용합니다. Define by Run 방식은 Pythonic하기 때문에 Tensorflow보다 직관적이고 간단합니다.
딥러닝 프레임워크인 Pytorch와 Tensorflow의 차이점에 대해 설명해주세요Tensorflow와 Pytorch의 가장 큰 차이점은 계산 그래프 정의 방식입니다. Tensorflow는 계산 그래프를 먼저 정의하고 실행 시점에 데이터를 넣어주는 Define and Run 방식의 정적 그래프를 사용합니다. Pytorch는 실행 시점마다 새로운 계산 그래프를 정의하는 Define by Run 방식의 동적 그래프를 사용합니다. Define by Run 방식은 Pythonic하기 때문에 Tensorflow보다 직관적이고 간단합니다.
2022.12.26 -
Seq2Seq는 인코더가 마지막 timestep에서 나오는 hidden state vector를 Context Vector로 사용하여, 디코더가 이 Context Vector를 통해 출력 시퀀스를 생성합니다. 그러나 이렇게 고정된 크기의 Context Vector에 모든 정보를 압축하므로 정보 손실이 발생할 수 있습니다. 따라서 이런 문제점을 위해 제안된 기법이 Attention 입니다. Attention 기법은 Encoder의 마지막 timestep에서 나오는 hidden state vector 하나에만 의존하는 것이 아니라 매 timestep 마다의 hidden state vector들과 Decoder의 hidden state vector들간 내적을 통해 구해진 값에 softmax를 취해 Encode..
Attention에 대해 설명해주세요Seq2Seq는 인코더가 마지막 timestep에서 나오는 hidden state vector를 Context Vector로 사용하여, 디코더가 이 Context Vector를 통해 출력 시퀀스를 생성합니다. 그러나 이렇게 고정된 크기의 Context Vector에 모든 정보를 압축하므로 정보 손실이 발생할 수 있습니다. 따라서 이런 문제점을 위해 제안된 기법이 Attention 입니다. Attention 기법은 Encoder의 마지막 timestep에서 나오는 hidden state vector 하나에만 의존하는 것이 아니라 매 timestep 마다의 hidden state vector들과 Decoder의 hidden state vector들간 내적을 통해 구해진 값에 softmax를 취해 Encode..
2022.12.25 -
LSTM은 전 time step에서 서로 다른 역할을 하는 Cell state vector와 Hidden state Vector를 입력으로 받습니다. 또한 LSTM은 forget/input/output gate가 존재하는데 이 gate들을 통해 이전 time step에서 넘어온 Cell state vector를 적절하게 변환하는데 사용합니다. Cell state vector는 기억해야할 필요가 있는 모든 정보를 담고 있는 벡터이고 Hidden state vector는 현재 time step에서 예측값을 내는 output layer에 입력으로 사용되는 벡터로서 Cell state가 가지는 많은 정보에서 해당 timestep의 예측값에 직접적으로 필요한 정보만을 filtering한 벡터입니다. LSTM은 이..
LSTM은 왜 유용한가요?LSTM은 전 time step에서 서로 다른 역할을 하는 Cell state vector와 Hidden state Vector를 입력으로 받습니다. 또한 LSTM은 forget/input/output gate가 존재하는데 이 gate들을 통해 이전 time step에서 넘어온 Cell state vector를 적절하게 변환하는데 사용합니다. Cell state vector는 기억해야할 필요가 있는 모든 정보를 담고 있는 벡터이고 Hidden state vector는 현재 time step에서 예측값을 내는 output layer에 입력으로 사용되는 벡터로서 Cell state가 가지는 많은 정보에서 해당 timestep의 예측값에 직접적으로 필요한 정보만을 filtering한 벡터입니다. LSTM은 이..
2022.12.20 -
RNN은 일반적인 신경망과 달리 순서가 있는 입력 데이터를 처리할 수 있는 순환 신경망입니다. 순차적인 입력 데이터인 Sequence 데이터가 입력으로 주어질 때 각 timestep에서 들어오는 입력벡터와 그 전 timestep의 RNN 모듈에서 계산한 hidden state 벡터를 입력으로 받아 현재 timestep에서의 hidden state 벡터를 출력으로 내어주는 구조입니다. RNN은 Backpropagation과정에서 tanh의 gradient가 반복되어 곱해지는 구조이기 때문에 gradient vanishing problem이 발생하여 긴 Sequence data를 다루기 어렵다는 한계점이 있습니다.
RNN에 대해 설명해주세요RNN은 일반적인 신경망과 달리 순서가 있는 입력 데이터를 처리할 수 있는 순환 신경망입니다. 순차적인 입력 데이터인 Sequence 데이터가 입력으로 주어질 때 각 timestep에서 들어오는 입력벡터와 그 전 timestep의 RNN 모듈에서 계산한 hidden state 벡터를 입력으로 받아 현재 timestep에서의 hidden state 벡터를 출력으로 내어주는 구조입니다. RNN은 Backpropagation과정에서 tanh의 gradient가 반복되어 곱해지는 구조이기 때문에 gradient vanishing problem이 발생하여 긴 Sequence data를 다루기 어렵다는 한계점이 있습니다.
2022.12.20 -
“과일”과 “회사” Named Entity를 인식(Recognize)하는 모델을 훈련시킨다. 과일에 관한 문장과 회사에 관한 문장을 수집하여 데이터셋을 구축한다음 “Apple”이라는 단어에 “과일”이라고 BIO 태깅을 진행한다. Input으로 문장 토큰들을 넣고 Output으로 각 토큰이 어떤 Entity에 해당하는지를 분류하도록 모델을 훈련시킨다.
문장에서 "Apple"이란 단어가 과일인지 회사인지 식별하는 모델을 어떻게 훈련시킬 수 있을까요?“과일”과 “회사” Named Entity를 인식(Recognize)하는 모델을 훈련시킨다. 과일에 관한 문장과 회사에 관한 문장을 수집하여 데이터셋을 구축한다음 “Apple”이라는 단어에 “과일”이라고 BIO 태깅을 진행한다. Input으로 문장 토큰들을 넣고 Output으로 각 토큰이 어떤 Entity에 해당하는지를 분류하도록 모델을 훈련시킨다.
2022.12.19 -
멀티 프로세스와 멀티 스레드 모두 컴퓨팅의 효율성을 위한 병렬처리 기법입니다. 멀티 프로세스는 두 개 이상의 다수 프로세서(CPU)가 협력적으로 하나 이상의 작업을 동시에 처리하도록 하는 것이며 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용합니다. 각 프로세스마다 독립된 구조이기 때문에 프로세스들 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않아 작업 속도가 느려질 수는 있겠지만 정지되는 문제는 발생하지 않습니다. 그러나 각 프로세스마다 독립된 메모리 영역을 갖고 있기 때문에 Context Switching이 자주 일어나서 주소 공간의 공유가 잦을 경우 오버헤드가 발생하여 성능저하가 발생할 수 있습니다. + Context Switching이란? 현재 진행하고 ..
Multi Process vs Multi Thread에 대해 설명해주세요멀티 프로세스와 멀티 스레드 모두 컴퓨팅의 효율성을 위한 병렬처리 기법입니다. 멀티 프로세스는 두 개 이상의 다수 프로세서(CPU)가 협력적으로 하나 이상의 작업을 동시에 처리하도록 하는 것이며 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용합니다. 각 프로세스마다 독립된 구조이기 때문에 프로세스들 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않아 작업 속도가 느려질 수는 있겠지만 정지되는 문제는 발생하지 않습니다. 그러나 각 프로세스마다 독립된 메모리 영역을 갖고 있기 때문에 Context Switching이 자주 일어나서 주소 공간의 공유가 잦을 경우 오버헤드가 발생하여 성능저하가 발생할 수 있습니다. + Context Switching이란? 현재 진행하고 ..
2022.12.14 -
동기는 요청에 대한 응답을 받은 후에 다음 요청을 진행할 수 있으나 비동기는 요청에 대한 응답 여부와 관계 없이 그 다음 요청을 보낼 수 있습니다.
동기와 비동기의 차이에 대해 설명해주세요동기는 요청에 대한 응답을 받은 후에 다음 요청을 진행할 수 있으나 비동기는 요청에 대한 응답 여부와 관계 없이 그 다음 요청을 보낼 수 있습니다.
2022.12.14 -
절차지향 프로그래밍은 데이터를 중심으로 함수를 만들어서 절차적으로 수행하는 방법입니다. 실행 속도가 빠르고 프로그램의 흐름을 쉽게 추적할 수 있는 것이 장점이지만 모든 구성요소가 유기성이 높기 때문에 유지보수가 어렵습니다. 객체지향 프로그래밍은 데이터와 함수를 묶어 하나의 객체로 만들어 각각의 객체들 간의 상호작용을 통한 로직을 구성하는 방법입니다. 캡슐화로 인해 유지보수가 용이하고 재사용이 가능합니다. 단점으로는 절차지향 프로그래밍보다 실행 속도가 느리다는 점입니다.
절차지향 프로그래밍 VS 객체지향 프로그래밍을 설명해주세요절차지향 프로그래밍은 데이터를 중심으로 함수를 만들어서 절차적으로 수행하는 방법입니다. 실행 속도가 빠르고 프로그램의 흐름을 쉽게 추적할 수 있는 것이 장점이지만 모든 구성요소가 유기성이 높기 때문에 유지보수가 어렵습니다. 객체지향 프로그래밍은 데이터와 함수를 묶어 하나의 객체로 만들어 각각의 객체들 간의 상호작용을 통한 로직을 구성하는 방법입니다. 캡슐화로 인해 유지보수가 용이하고 재사용이 가능합니다. 단점으로는 절차지향 프로그래밍보다 실행 속도가 느리다는 점입니다.
2022.12.12