머신러닝 모델 초기화 질문

82 views
Skip to first unread message

Hyeyun Kim

unread,
Aug 25, 2023, 3:36:38 AM8/25/23
to 머신러닝/딥러닝 도서 Q&A
안녕하세요?
현재 핸즈온 머신러닝2를 보면서 다양한 머신러닝 모델을 공부하고 있습니다.

1. 책에서 그리드 서치나 랜덤 서치로 최적 하이퍼 파라미터를 찾은 뒤 
모델을 초기화하여 다시 모델을 훈련하라는 내용이 나오는데요.
모델을 어떻게 초기화 하는 것인지는 설명이 없는 것 같아서
그 동안 코드를 처음부터 다시 실행하여 훈련 세트, 테스트 세트를 재 분배(?)하는 방식으로 모델을 초기화 해왔는데 이 방법 말고 다른 방법(파이썬 코드)이 있는지 여쭤봅니다.

딥러닝을 제외한 머신러닝 모델(랜덤포레스트, SVM 등등)과 딥러닝(신경망 등)의 최적 파라미터를 찾은뒤 초기화하여 다시 훈련하는 방법(코드 등)구체적으로 여쭤봐도 될까요?

2. 그리고 책에서는 최적 하이퍼파라미터를 찾은 뒤, 
모델을 초기화한 뒤 검증세트와 훈련세트를 합쳐서 다시 모델을 훈련하라고 나와있는데 신경말 말고 머신러닝(랜덤포레스트 SVM등등)도 마찬가지 인가요?   
랜덤포레스트 SVM 등등 모델에서는 랜덤서치를 실행할 때 cross validation을 사용하기 위해 검증세트를 따로 나누지 않고 진행했습니다. 신경망을 실행할 때는 훈련세트에서 검증세트를 따로 나누었습니다.

바쁘실텐데 감사합니다.

Haesun Park

unread,
Aug 28, 2023, 1:37:27 AM8/28/23
to Hyeyun Kim, 머신러닝/딥러닝 도서 Q&A
안녕하세요. 박해선입니다.
1,2번이 같은 질문인 것 같습니다.
모델을 초기화하여 다시 훈련하는 것은 훈련 세트와 검증 세트를 합쳐서 최적의 하이퍼파라미터로 다시 훈련한다는 의미입니다. 이는 특정 알고리즘에 해당되는 과정이 아니라 머신러닝 모델링의 모범 사례에 해당됩니다.
사이킷런의 경우 GridSearchCV나 RandomSearchCV 클래스가 교차 검증을 수행하고 최적의 하이퍼파라미터를 찾아주며 자동으로 훈련 세트 전체에서 모델을 다시 훈련합니다.
신경망의 경우 데이터셋이 크고 파라미터가 많기 때문에 사실 훈련 세트와 검증 세트를 합쳐서 다시 모델을 훈련하는 것이 어려운 경우가 많습니다(훈련에 며칠이 걸렸다면 최적의 하이퍼파라미터로 다시 며칠을 훈련해야 합니다). 이런 경우 허용하는 자원과 시간, 비즈니스 요구사항에 따라 판단하시면 될 것 같습니다.
감사합니다.

2023년 8월 25일 (금) 오후 4:36, Hyeyun Kim <blueoc...@gmail.com>님이 작성:
--
이 메일은 Google 그룹스 '머신러닝/딥러닝 도서 Q&A' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ml-dl-book-qn...@googlegroups.com에 이메일을 보내세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/ml-dl-book-qna/d7c28681-ac1a-4702-8f2e-0e29d97fbdacn%40googlegroups.com을(를) 방문하세요.

Hyeyun Kim

unread,
Aug 28, 2023, 5:14:15 AM8/28/23
to 머신러닝/딥러닝 도서 Q&A
안녕하세요!
질문을 쪽지로 잘못 보낸것 같아서 이곳에 다시 작성합니다 ㅠㅠ

훈련을 여러번 하고 싶은데 여러번 훈련하면 모델의 성능이 점점 좋아진다고 해서 매번 모델을 초기화하고 싶습니다.
이 경우, 모델명이 model 이면 어떤 코드를 사용해야하나요?
혹시  keras.backend.clear_session() 이 코드를 중간중간에 사용하면 될까요?

감사합니다!

2023년 8월 28일 월요일 오후 1시 37분 27초 UTC+8에 Haesun Park님이 작성:

Haesun Park

unread,
Aug 29, 2023, 12:01:54 AM8/29/23
to Hyeyun Kim, 머신러닝/딥러닝 도서 Q&A
안녕하세요. 박해선입니다.
모델을 여러번 훈련하면 성능이 좋아진다는 말은 훈련된 가중치를 유지한채 다시 훈련을 한다는 말씀인가요?
모델을 초기화한다는 것은 가중치를 초기화한다는 뜻이라 앞의 말과 상충됩니다.
어떤 의미인지 제가 확실히 모르겠지만 모델의 가중치를 초기화하려면 새로운 모델을 생성하는게 가장 빠릅니다.
모델 생성 코드를 함수로 만들고 필요할 때마다 이 함수를 호출하세요.
감사합니다!

2023년 8월 28일 (월) 오후 6:14, Hyeyun Kim <blueoc...@gmail.com>님이 작성:

Hyeyun Kim

unread,
Aug 29, 2023, 9:03:05 AM8/29/23
to 머신러닝/딥러닝 도서 Q&A
답변 감사합니다!
위 답변에서 그리드서치와 랜덤서치는 훈련세트와 검증세트를 합쳐서 최종적으로 자동으로 모델을 훈련한다고 말씀해주셨는데

제가 지금 시계열 데이터로 모델을 만들었는데, 케라스 창시자 책 예시에서는 
그리드서치나 랜덤서치를 사용하지 않고 훈련세트로 이미 만든 모델을 검증모델로 평가했더라구요~
그래서 모델을 만든 후 훈련세트+검증모델을 합해서 모델을 재 훈련하고자 한다면

model.save('./Model.h5', save_format='h5')
처음 훈련세트로 만든(검증모델로 평가한) 모델을 h5 파일로 저장한후

loaded_model = tf.keras.models.load_model('./Model.h5')
model_load 함수로 이전 모델을 불러와서

loaded_model.fit(x_train_val, y_train_val, epochs = 300, validation_data = (x_test,y_test))
위와 같이 훈련하는 순서로 진행하면 될까요? (데이터 세트는 train, val, test로 나누었습니다)
이때 loaded_model를 다시 컴파일 할 필요는 없지요?
loaded_model.fit()에서 validation_data를 설정하지 않고 훈련을 진행해도 무관할까요?

초보자라서 질문이 많네요 ㅠㅠ
답변 감사합니다.
2023년 8월 29일 화요일 오후 12시 1분 54초 UTC+8에 Haesun Park님이 작성:

Haesun Park

unread,
Sep 1, 2023, 6:28:42 AM9/1/23
to Hyeyun Kim, 머신러닝/딥러닝 도서 Q&A
안녕하세요. 박해선입니다.
케라스와 교차 검증에 대한 방법은 온라인 검색을 통해 쉽게 확인하실 수 있습니다.
다만 딥러닝 모델은 교차 검증을 잘 수 행하지 않기 때문에 
제가 딥러닝 모델의 교차 검증에 대한 충분한 정보를 가지고 있지 않습니다.
훈련 세트와 검증 세트를 합쳐서 모델을 훈련할 때는 테스트 세트를 검증 세트로 사용하는 것이 의미가 없을 것 같습니다.
테스트 세트는 evaluate 메서드에만 활용하는 것이 맞을 것 같네요.
감사합니다.

2023년 8월 29일 (화) 오후 10:03, Hyeyun Kim <blueoc...@gmail.com>님이 작성:
Reply all
Reply to author
Forward
0 new messages