딥러닝 모델 설계 노드수 은닉층 수 결정하는 법

2021. 11. 14. 13:25·AI/딥러닝

https://www.clien.net/service/board/kin/10588915

 

(딥러닝, 머신러닝) 은닉 레이어나 노드 수는 어떻게 정하는 건가요? : 클리앙

** 이 게시판은 댓글이 달리면 게시물을 삭제할 수 없습니다. ** ** 내용의 장기노출이 곤란한 경우 [수정]을 통해 내용을 변경하시기 바랍니다. ** 안녕하세요. 이제 막 머신 러닝을 공부하고 있는

www.clien.net

딥러닝 모델을 설계하게 되면서 노드의 수 은닉층의 수에 자연스럽게 관심이 가지게되었다.

 

안녕하세요. 이제 막 머신 러닝을 공부하고 있는데, 은닉 레이어나 노드 수는 어떻게 정하는 지 궁금합니다.

 

입력이나 출력 노드는 말 그대로 입출력 타입에 따라 결정되는데, 핵심이 되는 은닉 레이어나 노드 수는 무엇에 따라 정하나요?

 

알파고 같은 경우는 은닉 레이어가 40개 정도 된다는 걸 예전에 읽은 기억이 있는데, 기능이나 활용도에 따라 바람직한 수가 다른가요?

 

저도 공부 중이긴 한데 이런저런 프로젝트 하면서 피드백 받은 결론은 "공식은 없다" 였고요
그러면 당최 어떻게 정하냐 인데 나름 몇 가지 기준이 있더라고요.

우선 1. 문제의 복잡성 2. 데이터의 양 3. 하드웨어 및 시간 이 3가지를 고려해야 하고요.
1번이 말씀하신 기능이나 활용도에 따라 다른 거고, 자기가 하려는 작업과 비슷한 다른 네트워크의 구조를 참고하면 시작점이 될 거에요.

데이터의 양은, 만약 데이터가 충분히 많으면 상관이 없지만, 데이터의 양이 그다지 많지 않으면 깊은 네트워크 즉 레이어 수가 너무 많으면 문제가 될 거에요. 깊을 수록 학습에 더 많은 데이터가 필요하고, 결국 학습이 제대로 안 되거나 오버피팅이 날 경우가 많겠죠. 절대적인건 아니지만 데이터의 양이 문제될 경우는 노드 수를 좀 늘리고 레이어 수를 줄이는 게 개인적으론 조금 더 낫더라고요.

3번 하드웨어는 우선 본격적으로 딥러닝 하시면 결국 GPU를 쓰셔야 할 텐데, 사용하시는 GPU의 VRAM이 중요합니다. Batch에 들어가는 데이터와 네트워크 파라메터 및 구조들이 VRAM에 다 올라갈 수 있어야 하고, 만약 그렇지 않으면 아예 구동이 안 되거나 심각한 성능 저하가 일어나고요. 그리고 일단 올라가더라도 몇 시간 내지 며칠 동안 세월아내월아 돌릴 수 있는 상황과 빨리빨리 결과를 봐야하는 상황은 다르겠죠.

 

https://stats.stackexchange.com/questions/181/how-to-choose-the-number-of-hidden-layers-and-nodes-in-a-feedforward-neural-netw

 

How to choose the number of hidden layers and nodes in a feedforward neural network?

Is there a standard and accepted method for selecting the number of layers, and the number of nodes in each layer, in a feed-forward neural network? I'm interested in automated ways of building neu...

stats.stackexchange.com

 

이 링크가 조금 도움이 될 거에요.
그리고 파라메터 수를 비슷하게 놓았을 때, 많은 노드 + 얕은 레이어 vs 적은 노드 + 깊은 레이어 이것도 선택을 해야 하는데요. 이거야 계속 해보면서 시행착오를 해야겠지만, 저는 보통 주어진 작업을 할 때 고려해야 할 특징이나 방식이 고차원적인 경우는 노드 수를 줄여서라도 레이어 수를 늘리려고 하는 편이고요. 다양한 입력 데이터를 동시에 분석해야 할 일이 많다면 노드가 많은 게 훨씬 좋았어요.

 

 

[How to choose the number of hidden layers and nodes in a feedforward neural network?

Is there a standard and accepted method for selecting the number of layers, and the number of nodes in each layer, in a feed-forward neural network? I'm interested in automated ways of building neu...

stats.stackexchange.com](https://stats.stackexchange.com/questions/181/how-to-choose-the-number-of-hidden-layers-and-nodes-in-a-feedforward-neural-netw)

 

How to choose the number of hidden layers and nodes in a feedforward neural network?

Is there a standard and accepted method for selecting the number of layers, and the number of nodes in each layer, in a feed-forward neural network? I'm interested in automated ways of building neu...

stats.stackexchange.com

 

엄청나게 오래된 답변 같지만 그래도 참고하는 것에는 문제가 없다고 생각한다.? 맞는지는 모르겠지만

딥러닝 모델을 설계하게 되면서 노드의 수 은닉층의 수에 자연스럽게 관심이 가지게되었다.

스택 오버 플로우만 있는 줄 알았는데 스택 익스체인지도 있다.

위의 글이 사라질수 있다 생각하여 옮겨둠

Q.(딥러닝, 머신러닝) 은닉 레이어나 노드 수는 어떻게 정하는 건가요?

안녕하세요. 이제 막 머신 러닝을 공부하고 있는데, 은닉 레이어나 노드 수는 어떻게 정하는 지 궁금합니다.

입력이나 출력 노드는 말 그대로 입출력 타입에 따라 결정되는데, 핵심이 되는 은닉 레이어나 노드 수는 무엇에 따라 정하나요?

알파고 같은 경우는 은닉 레이어가 40개 정도 된다는 걸 예전에 읽은 기억이 있는데, 기능이나 활용도에 따라 바람직한 수가 다른가요?

답 : 저도 공부 중이긴 한데 이런저런 프로젝트 하면서 피드백 받은 결론은 "공식은 없다" 였고요
그러면 당최 어떻게 정하냐 인데 나름 몇 가지 기준이 있더라고요.

우선 1. 문제의 복잡성 2. 데이터의 양 3. 하드웨어 및 시간 이 3가지를 고려해야 하고요.
1번이 말씀하신 기능이나 활용도에 따라 다른 거고, 자기가 하려는 작업과 비슷한 다른 네트워크의 구조를 참고하면 시작점이 될 거에요.

데이터의 양은, 만약 데이터가 충분히 많으면 상관이 없지만, 데이터의 양이 그다지 많지 않으면 깊은 네트워크 즉 레이어 수가 너무 많으면 문제가 될 거에요. 깊을 수록 학습에 더 많은 데이터가 필요하고, 결국 학습이 제대로 안 되거나 오버피팅이 날 경우가 많겠죠. 절대적인건 아니지만 데이터의 양이 문제될 경우는 노드 수를 좀 늘리고 레이어 수를 줄이는 게 개인적으론 조금 더 낫더라고요.

3번 하드웨어는 우선 본격적으로 딥러닝 하시면 결국 GPU를 쓰셔야 할 텐데, 사용하시는 GPU의 VRAM이 중요합니다. Batch에 들어가는 데이터와 네트워크 파라메터 및 구조들이 VRAM에 다 올라갈 수 있어야 하고, 만약 그렇지 않으면 아예 구동이 안 되거나 심각한 성능 저하가 일어나고요. 그리고 일단 올라가더라도 몇 시간 내지 며칠 동안 세월아내월아 돌릴 수 있는 상황과 빨리빨리 결과를 봐야하는 상황은 다르겠죠.

http://stats.stackexchange.com/questions/181/how-to-choose-the-number-of-hidden-layers-and-nodes-in-a-feedforward-neural-netw

 

How to choose the number of hidden layers and nodes in a feedforward neural network?

Is there a standard and accepted method for selecting the number of layers, and the number of nodes in each layer, in a feed-forward neural network? I'm interested in automated ways of building neu...

stats.stackexchange.com

이 링크가 조금 도움이 될 거에요.
그리고 파라메터 수를 비슷하게 놓았을 때, 많은 노드 + 얕은 레이어 vs 적은 노드 + 깊은 레이어 이것도 선택을 해야 하는데요. 이거야 계속 해보면서 시행착오를 해야겠지만, 저는 보통 주어진 작업을 할 때 고려해야 할 특징이나 방식이 고차원적인 경우는 노드 수를 줄여서라도 레이어 수를 늘리려고 하는 편이고요. 다양한 입력 데이터를 동시에 분석해야 할 일이 많다면 노드가 많은 게 훨씬 좋았어요.

요약

우선 이것에 대한 의견은 아주 많다. 사람들 마다 의견이 아주 다양한 논쟁거리..?인거 같다.

어떤 사람은 경험적으로 해봐야한다.

하지만 우리가 해결하고 싶은 딥러닝 문제는 대부분 어떤식으로 해도 상당 수준의 정확성이 나온다는 의견도 있다.

직접 모델을 설계하고 만들게 되면서 1~2%의 성능을 늘리기 위한 문제라는 의견이 있다.

개인적인 생각으로는 규칙이 있지 않을까 라는 생각을해본다.

이런 공식도 있나보다

@doug's answer has worked for me. There's one additional rule of thumb that helps for supervised learning problems. You can usually prevent over-fitting if you keep your number of neurons below:

이말에 의하면 위의 공식이 오버 피팅을 막아준다는거 같다

자세한 내용을 천천히 읽어보자

반응형

'AI > 딥러닝' 카테고리의 다른 글

RNN과 LSTM  (0) 2022.05.09
딥러닝 전이학습 - keras  (0) 2021.11.13
object detection 성능 지표  (0) 2021.11.05
딥러닝 학습의 이해  (0) 2021.10.31
from tensorflow.keras.preprocessing.image import load_img  (0) 2021.10.31
'AI/딥러닝' 카테고리의 다른 글
  • RNN과 LSTM
  • 딥러닝 전이학습 - keras
  • object detection 성능 지표
  • 딥러닝 학습의 이해
코딩 코딩 코오딩
코딩 코딩 코오딩
  • 코딩 코딩 코오딩
    코딩하는 누누
    코딩 코딩 코오딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (502)
      • 생산성 (2)
        • 인텔리제이 (2)
      • 프로젝트 기록 (18)
        • git (4)
        • spring (3)
        • TestCode (2)
        • spring security (3)
        • 기타 (4)
        • MySQL (0)
        • Cloud (2)
      • 회고 (5)
      • Spring (7)
      • JPA (1)
      • DB (1)
        • MySql (3)
        • Redis (1)
      • Java (8)
        • JSP (1)
      • 인프라 (3)
      • 잡담 (0)
      • CS (30)
        • 컴퓨팅 사고 (0)
        • 배열 (4)
        • 알고리즘 (8)
        • 메모리 (7)
        • 자료구조 (9)
        • 암호학 (2)
      • opencv (14)
      • AI (56)
        • 머신러닝 (2)
        • 딥러닝 (7)
        • tensorflow (3)
        • 머신러닝(딥러닝) 정리 (21)
        • 강화학습 (7)
        • 논문 읽기 (1)
        • 잡동사니 (1)
        • python AI (13)
        • 선형대수 (1)
        • 확률론 (0)
      • 알고리즘 공부 (177)
        • 그래프 이론 (0)
        • 다익스트라 (4)
        • 위상정렬 (3)
        • 신장트리-크루스칼 알고리즘 (4)
        • 플로이드 워셜 (3)
        • 이진탐색 (9)
        • 백트래킹 (11)
        • 부르드포스 (9)
        • 다이나믹 프로그래밍 (20)
        • BFS & DFS (24)
        • 그리디 (6)
        • 구현 (15)
        • 정렬 (3)
        • 기타 (62)
        • 수학? (1)
      • 코딩 (173)
        • 파이썬(python) (15)
        • c언어 (13)
        • 프로그래머스 lv1 (46)
        • 프로그래머스 lv2 (41)
        • 백준 - c++ (49)
        • Softeer (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코딩문제
    왜곡보정
    순차 탐색
    코딩기초스킬
    n진법 변환
    에라토슽네스의 체
    코딩
    선택정렬
    인접리스트
    정렬
    DFS
    if문
    C언어 기초
    알고리즘
    삽입 정렬
    다이나믹 프로그래밍
    BFS
    캘리브레이션
    코딩기초
    c언어
    백준
    이미지처리
    코딩테스트
    그리디
    자료구조
    소수찾기
    프로그래머스
    인접행렬
    스택
    큐
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩 코딩 코오딩
딥러닝 모델 설계 노드수 은닉층 수 결정하는 법
상단으로

티스토리툴바