1년 이하 정도 딥러닝을 열심히 해 본 개발자들이 일정 수준 이상으로 잘 대답할 것으로 기대하는 질문들



1. 요즘 Sigmoid 보다 ReLU를 많이 쓰는데 그 이유는?


+ Non-Linearity라는 말의 의미와 그 필요성은?

+ ReLU로 어떻게 곡선 함수를 근사하나?

+ ReLU의 문제점은?

+ Bias는 왜 있는걸까?


2. Gradient Descent에 대해서 쉽게 설명한다면?


+ 왜 꼭 Gradient를 써야 할까?

+ 그 그래프에서 가로축과 세로축 각각은 무엇인가?

+ 실제 상황에서는 그 그래프가 어떻게 그려질까?

+ GD 중에 때때로 Loss가 증가하는 이유는?

+ 중학생이 이해할 수 있게 더 쉽게 설명 한다면?

+ Back Propagation에 대해서 쉽게 설명 한다면?


3. Local Minima 문제에도 불구하고 딥러닝이 잘 되는 이유는?


+ GD가 Local Minima 문제를 피하는 방법은?

+ 찾은 해가 Global Minimum인지 아닌지 알 수 있는 방법은?


4. CNN에 대해서 아는대로 얘기하라


+ CNN이 MLP보다 좋은 이유는?

+ 어떤 CNN의 파라메터 개수를 계산해 본다면?

+ 주어진 CNN과 똑같은 MLP를 만들 수 있나?

+ 풀링시에 만약 Max를 사용한다면 그 이유는?

+ 시퀀스 데이터에 CNN을 적용하는 것이 가능할까?


5. Word2Vec의 원리는?


+ 그 그림에서 왼쪽 파라메터들을 임베딩으로 쓰는 이유는?

+ 그 그림에서 오른쪽 파라메터들의 의미는 무엇일까?

+ 남자와 여자가 가까울까? 남자와 자동차가 가까울까?

+ 번역을 Unsupervised로 할 수 있을까?


6. Auto Encoder에 대해서 아는대로 얘기하라


+ MNIST AE를 TF나 Keras등으로 만든다면 몇줄일까?

+ MNIST에 대해서 임베딩 차원을 1로 해도 학습이 될까?

+ 임베딩 차원을 늘렸을 때의 장단점은?

+ AE 학습시 항상 Loss를 0으로 만들수 있을까?

+ VAE는 무엇인가?


7. Training 세트와 Test 세트를 분리하는 이유는?


+ Validation 세트가 따로 있는 이유는?

+ Test 세트가 오염되었다는 말의 뜻은?

+ Regularization이란 무엇인가?


8. Batch Normalization의 효과는?


+ Dropout의 효과는?

+ BN 적용해서 학습 이후 실제 사용시에 주의할 점은? 코드로는?

+ GAN에서 Generator 쪽에도 BN을 적용해도 될까?


9. SGD, RMSprop, Adam에 대해서 아는대로 설명한다면?


+ SGD에서 Stochastic의 의미는?

+ 미니배치를 작게 할때의 장단점은?

+ 모멘텀의 수식을 적어 본다면?


10. 간단한 MNIST 분류기를 MLP+CPU 버전으로 numpy로 만든다면 몇줄일까?


+ 어느 정도 돌아가는 녀석을 작성하기까지 몇시간 정도 걸릴까?

+ Back Propagation은 몇줄인가?

+ CNN으로 바꾼다면 얼마나 추가될까?


11. 간단한 MNIST 분류기를 TF나 Keras 등으로 작성하는데 몇시간이 필요한가?


+ CNN이 아닌 MLP로 해도 잘 될까?

+ 마지막 레이어 부분에 대해서 설명 한다면?

+ 학습은 BCE loss로 하되 상황을 MSE loss로 보고 싶다면?

+ 만약 한글 (인쇄물) OCR을 만든다면 데이터 수집은 어떻게 할 수 있을까?


12. 간단한 MNIST DCGAN을 작성한다면 TF 등으로 몇줄 정도 될까?


+ GAN의 Loss를 적어보면?

+ D를 학습할때 G의 Weight을 고정해야 한다. 방법은?

+ 학습이 잘 안될때 시도해 볼 수 있는 방법들은?


13. 딥러닝할 때 GPU를 쓰면 좋은 이유는?


+ 학습 중인데 GPU를 100% 사용하지 않고 있다. 이유는?

+ GPU를 두개 다 쓰고 싶다. 방법은?

+ 학습시 필요한 GPU 메모리는 어떻게 계산하는가?


14. TF 또는 Keras 등을 사용할 때 디버깅 노하우는?


15. Collaborative Filtering에 대해 설명한다면?


16. AutoML이 뭐하는 걸까?


이상 공통 (기본) 질문들만 정리해 봤다.


출처

https://www.facebook.com/dgtgrade?ref=br_rs


'Machine Learning' 카테고리의 다른 글

헬스케어 챗봇 HealDa  (0) 2018.01.26
금융의 역사를 통해 본 딥러닝의 함정  (0) 2018.01.17
지도 vs 비지도 학습  (0) 2018.01.17
Major tasks in data preprocessing  (0) 2018.01.10
Deview 2017 책 읽어주는 딥러닝  (0) 2018.01.10
Posted by 커다란꼬꼬마

Java9과 Spring5 로 바라보는 Java의 변화와 도전

이일민(Toby)님의 발표


2017년 9월 21일

  - Java SE 9

  - Spring Framework 5.0


기존의 EJB부터 이전의 자바버전과 최근의 자바까지해서

코드의 간결성과 유지보수, 퍼포먼스까지 고려를 해서 코드로 비교를 해서 직접적으로 이해를 도움.


언어의 발전과 함께 코드 호환성도 지킨다 -> 새로운 기술이 들어오더라도 다시 컴파일 할 필요가 없이 호환됨.


애노테이션 기반의 메타프로그래밍과 영리한 디폴트로 무장한 관례의 적극 도입 -> SpringBoot로 Ruby on rails와 비교해도 더 간결해짐.


함수형 프로그래밍 스타일의 자바와 비동기 논블록킹 지원 서블릿, 스프링 등장

  - Java8

    - 함수형 인터페이스와 람다식

    - 메소르 레퍼런스

    - 디폴트 메소드

    - CompletableFuture

ex) IntStream.iterate(1, a -> a+1).limit(10).reduce(0, (a,b)-> a+b);


애노테이션과 메타프로그래밍, 관례의 범람


함수형 스타일 프로그래밍이 도입된 업그레이드 된 자바의 기본으로 돌아가자


스프링5.0 - 새로운 함수형 스타일 웹 개발 지원

  - 서블릿의 의존성 제거

    - 서블릿 컨테이너를 비동기 HTTP서버로 활용 가능

  - 새로운 HTTP 요청과 응답의 추상화 - 불변 객체

    - ServerRequest

    - ServerResponse

  - 두 개의 함수를 이용해 개발

    - HandlerFunction

    - RouterFunction

  - Mono<T>, Flux<T> 리액리브 방식


웹 핸들러(컨트롤러)가 웹 요청 처리하는 방식

  - 요청 매핑

  - 요청 바인딩

  - 핸들러 실행

  - 핸들러 결과 처리(응답 생성)


public static void main(String[] args) throws Exception{

HandlerFunction helloHandler = (ServerRequest req) -> {

String name = req.pathVariable("name");

return ServerResponse.ok().syncBody("Hello " + name);

};


RouterFunction router = req -> RequestPredicates.path("/hello/{name}").test(req) ?

Mono.just(helloHandler) : Mono.empty();


HttpHandler httpHandler = RouterFunctions.toHttpHandler(router);


ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler);

HttpServer server = HttpServer.create("localhost", 8080);

server.newHandler(adapter).block();


System.in.read();

}



==========================================================

public static void main(String[] args) throws Exception{

HttpServer

  .create("localhost", 8080)

  .newHandler(new ReactorHttpHandlerAdapter(toHttpHandler(route(path("/hello/{name}"), req -> ServerResponse.ok().syncBody("Hello " + req.pathVariable("name")))))).subscribe();

}



Mono/Flux

  - 정보를 전달할 때 컨테이너 사용

    - Mono - 단일 오브젝트

    - Flux - 스트림 오브젝트

  - 데이터 가공, 변환, 조합을 위한 다양한 연산 제공

  - 스케줄러를 이용해 비동기 작업 수행

  - 지연 연산, 자유로운 조합

  - 스프링 함수형 웹 개발의 모든 기능이 Mono/Flux기반으로 재개발


발표 뒤쪽부분은 이해를 못하는 부분도 많았지만 토비님의 발표를 들으면서

그동안 공부했던 부분과 함수형 프로그래밍 부분이 이해가 되었고 언어자체도 중요하지만

생태계의 중요성을 또 한번 느끼게 됨.


출처

https://www.youtube.com/watch?v=BFjrmj4p3_Y

'개발' 카테고리의 다른 글

NoSQL  (0) 2018.03.24
Spring 1  (0) 2018.02.03
Hypothesis test  (0) 2018.01.06
PriorityQueue(Java)  (0) 2018.01.05
MVC 아키텍처  (0) 2018.01.05
Posted by 커다란꼬꼬마

금융의 역사를 통해 본 딥러닝의 함정


  - SK T 아카데미에서 챗봇 관련 오프라인 세미나를 통해서 알게되었던 이태영님께서 진행하신 naver d2에서의 세미나


  - 최신의 비트코인과 기존 회사에서의 머신러닝을 바라보는 관점을 느낄 수 있었고 역사론적 관점을 통해 세부적인 요소에서 벗어나 큰 그림을 보는 시각은 느낌.


  - 현재 금융권에서 딥러닝을 어떤 방식으로 다루고 월스트리스에서 호령하고 있는 켄쇼 프레임워크를 알게 됨.



출처

https://www.youtube.com/watch?v=mpZSb9DzAR8

'Machine Learning' 카테고리의 다른 글

헬스케어 챗봇 HealDa  (0) 2018.01.26
딥러닝 면접 질문 리스트  (0) 2018.01.17
지도 vs 비지도 학습  (0) 2018.01.17
Major tasks in data preprocessing  (0) 2018.01.10
Deview 2017 책 읽어주는 딥러닝  (0) 2018.01.10
Posted by 커다란꼬꼬마

블로그 이미지
커다란꼬꼬마

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.4
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

최근에 올라온 글

최근에 달린 댓글

글 보관함